以下のプログラムを作ってみたところ、最初はうまくいきました。
Label 1
Input "n=", Q
If Q≤0
...Then
Goto 1
Else
Label 2
((Q-2int(Q/2))(3Q+1)+(1-Q+2int(Q/2))(Q/2))->Q
Display Q
If Q≠1
Then
Goto 2
Else
Goto 1
これが行うことになっているのは、開始番号を入力することであり、偶数の場合はQ/2
. 奇数の場合は3Q+1
、結果を に格納しQ
ます。これがコラッツ予想であり、この反復を続けると、どの数字から始めても常に 1 になるというものです。最初の数字の中には、到達するまでにより多くのステップを必要とするものもあれば、より少ないステップしか必要としないものもあります。
問題:
プログラムが多数の反復を行った後、エラーが表示され、デバッグを押すと、カーソルがQ
inの上に移動することがありますif Q≠1
。
なぜこれが起こり続けるのか知っていますか?ありがとう。