1937年にドイツの数学者Collatz(コラッツ)が,「ある数が偶数なら2で割り,奇数なら3倍して1を足す。これを繰り返すとすべての数は1になるだろう」と予想しましたが,だれもそれを証明することができていません。
Rのプログラムで調べてみましょう。
collatz = function(n) {
cat(n)
while (n > 1) {
if (n %% 2 == 0) {
n = n / 2
} else {
n = 3 * n + 1
}
cat(" →", n)
}
}
ここで n %% 2 はnを2で割った余りです。
例えば collatz(3) と打つと次のように出ます。
3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
いろいろな数から出発して,Collatzの予想が正しいかどうか確かめてください。
Last modified: 2010-06-21 10:16:12