0

数のコラッツ数列を見つけようとしています。次のコードは、番号 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 の場合は終了すると述べています。

4

1 に答える 1