Collatz conjecture(1)
1に到達するまでの数列の長さを求めるコードを書いてみた。
オンライン整数列大辞典の
A006577(http://oeis.org/A006577/list)
と比較し、答え合わせしてみる。
def collatz(n)
return 0 if n == 1
return 1 + collatz(n / 2) if n % 2 == 0
return 1 + collatz(3 * n + 1)
end
def A006577(n)
(1..n).map{|i| collatz(i)}
end
ary = A006577(72)
# OEIS A006577のデータ
ary0 =
[0,1,7,2,5,8,16,3,19,6,14,9,9,17,17,4,12,20,20,7,
7,15,15,10,23,10,111,18,18,18,106,5,26,13,13,21,
21,21,34,8,109,8,29,16,16,16,104,11,24,24,24,11,
11,112,112,19,32,19,32,19,19,107,107,6,27,27,27,
14,14,14,102,22]
# 一致の確認
p ary == ary0
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。