Collatzの問題

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