2015年12月27日日曜日

151227(4)

Ruby


Stern's diatomic series(1)

a(2n) = a(n), a(2n + 1) = a(n) + a(n + 1)
という性質があるが、
a(n + 1) = a(n) + a(n - 1) - 2(a(n - 1) mod a(n))
を使って求めてみた。
オンライン整数列大辞典の
A002487(http://oeis.org/A002487/list)
と比較し、答え合わせしてみる。

def A002487(n)
  a, b = 0, 1
  ary = [a, b]
  i = 1
  while i < n
    a, b = b, b + a - 2 * (a % b)
    ary << b
    i += 1
  end
  ary[0..n]
end
ary = A002487(91)

# OEIS A002487のデータ
ary0 =
[0,1,1,2,1,3,2,3,1,4,3,5,2,5,3,4,1,5,4,7,3,8,5,7,
 2,7,5,8,3,7,4,5,1,6,5,9,4,11,7,10,3,11,8,13,5,12,
 7,9,2,9,7,12,5,13,8,11,3,10,7,11,4,9,5,6,1,7,6,11,
 5,14,9,13,4,15,11,18,7,17,10,13,3,14,11,19,8,21,
 13,18,5,17,12,19]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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