collatz シーケンスを使用して数値の連鎖の長さを求める Java プログラムを作成しました。コラッツ数列は、偶数なら2で割り、奇数なら3倍して1を足す。数が 1 に達すると、シーケンスは終了します。コラッツ シーケンスに関する追加情報。私のプログラムは 1 から 100 万までの数字の鎖の長さを見つけますが、113382 で止まります。エラー メッセージは表示されず、プログラムは数字の出力を停止するだけです。
*編集: テストしたところ、プログラムが 113383 の場合、チェーンは負の値に収束することがわかりました。誰でもこれを説明できますか?
非常に短いので、完全なコードを含めました。
public static void main(String[] args) {
int max =0, maxChain=0;
for(int i = 2; i <1000000; i++ )
{
int c =i;
int counter = 0;
while(c != 1)
{
if(c%2 ==0) c/=2;
else c= 3*c+1;
counter++;
}
if(counter > maxChain)
{
maxChain =counter;
max = i;
}
System.out.println(i);
}
System.out.println(max +" has a chain length of " +maxChain);
}