2015年8月4日火曜日

150804

Ruby


Pisano period

オンライン整数列大辞典の
A001175(http://oeis.org/A001175/list)
と比較し、答え合わせしてみる。

def pisano_period(n)
  return 1 if n == 1
  a, b = 0, 1
  i = 2
  while !(a == n - 1 && b == 1)
    a, b = b, a + b
    b %= n
    i += 1
  end
  i
end

def A001175(n)
  (1..n).map{|i| pisano_period(i)}
end
ary = A001175(67)

# OEIS A001175のデータ
ary0 =
[1,3,8,6,20,24,16,12,24,60,10,24,28,48,40,24,36,
 24,18,60,16,30,48,24,100,84,72,48,14,120,30,48,40,
 36,80,24,76,18,56,60,40,48,88,30,120,48,32,24,112,
 300,72,84,108,72,20,48,72,42,58,120,60,30,48,96,
 140,120,136]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。