数のコラッツ数列を見つけようとしています。次のコードは、番号 113383 の無限ループに陥ります。
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;
}
編集:コラッツ予想は、数が偶数の場合、次の数は n/2 であり、数が奇数の場合は 3n+1 であり、数が 1 の場合は終了すると述べています。