2015年12月30日水曜日

151230

Ruby


p(Fn | 和因子はフィボナッチ数)(1)

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

def A000045(n)
  a, b = 0, 1
  ary = [a]
  i = 0
  while i < n
    ary << b
    a, b = b, b + a
    i += 1
  end
  ary
end

def A098641(n)
  return [1] if n == 1
  ary = A000045(n)[2..-1]
  m = ary[-1]
  ps = Array.new(m + 1){0}
  ps[0] = 1
  a_ary = [1]
  ary.each{|num|
    (num..m).each{|i|
      ps[i] += ps[i - num]
    }
    a_ary << ps[num]
  }
  a_ary
end

ary = A000045(38)
# OEIS A000045のデータ
ary0 =
[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
 1597,2584,4181,6765,10946,17711,28657,46368,75025,
 121393,196418,317811,514229,832040,1346269,
 2178309,3524578,5702887,9227465,14930352,24157817,
 39088169]
# 一致の確認
p ary == ary0

ary = A098641(21)
# OEIS A098641のデータ
ary0 =
[1,1,2,3,6,14,41,157,803,5564,53384,718844,
 13783708,380676448,15298907733,902438020514,
 78720750045598,10220860796171917,
 1986422867300209784,580763241873718042562,
 256553744608217295298827]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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