1

collat​​z シーケンスを使用して数値の連鎖の長さを求める 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);

}
4

1 に答える 1