Я пытаюсь найти последовательность Collatz числа. Следующий код работает в бесконечном цикле для номера 113383.Последовательность Collatz числа
int collatz(long number) {
int length = 1; //length of the sequence
while (number != 1) {
printf("%ld-", number);
if ((number % 2) == 0)
number /= 2;
else
number = (number * 3) + 1;
length++;
}
return length;
}
int main() {
printf("%d", collatz(113383));
return 0;
}
РЕДАКТИРОВАТЬ: гипотеза коллатца Говорит следующее число в последовательности п/2, если число четное 3n + 1, если число является нечетным если номер равен 1
Выполнение проекта Euler :) – aaronman
@ Kamiccolo пересекала INT_MAX в точке. Спасибо за помощь. – SureshS
Изменение 'long number' на' unsingned long' может исправить это. Поскольку наибольшее количество в цепочке, созданное 'collatz (113383)', превышает 2^31-1 (подписанный длинный) предел. И тип по умолчанию (подписанный, используемый) длинный изменяется между компиляторами. – Kamiccolo