ドイツのLothar Collatzという数学者が1937年に提示したとのことで、まだ証明がされていないらしい。予想は以下のようにシンプル。
任意の自然数の初期値nに対して、以下の操作を繰り返すことにより、有限回の操作で必ず1に達する。
- nが偶数の場合、2で割る
- nが奇数の場合、3倍して1を足す
CoffeeScriptによるコードの例
1 2 3 4 5 6 7 8 9 10 |
n = parseInt(process.argv[2]) until n == 1 console.log(n) if n % 2 == 0 n = n // 2 else n = n * 3 + 1 console.log(n) |
いくつかの初期値に対するnの変化
1 2 3 4 5 |
1 -> 1 2 -> 2 1 3 -> 3 10 5 16 8 4 2 1 4 -> 4 2 1 5 -> 5 16 8 4 2 1 |