Я пытался решить проблему проблемы 14 из Project Euler и написал следующий С#...
int maxColl = 0;
int maxLen = 0;
for (int i = 2; i < 1000000; i++) {
int coll = i;
int len = 1;
while (coll != 1) {
if (coll % 2 == 0) {
coll = coll / 2;
} else {
coll = 3 * coll + 1;
}
len++;
}
if (len > maxLen) {
maxLen = len;
maxColl = i;
}
}
Проблема была, она просто бежала и бежала, не останавливаясь.
После поиска решения проблемы других людей я увидел, что один выглядит очень похожим, за исключением того, что он использовал long вместо int. Я не понял, почему это необходимо, так как все числа, связанные с этой проблемой, находятся в пределах диапазона int, но я все равно пробовал.
Изменив int на long, код запустился чуть более 2 секунд.
Кто-нибудь может объяснить это мне?