Ramanujan's tau function(1)
オンライン整数列大辞典の
A000594(http://oeis.org/A000594/list)
と比較し、答え合わせしてみる。
def mul(f_ary, b_ary)
s1, s2 = f_ary.size, b_ary.size
ary = Array.new(s1 + s2 - 1, 0)
(0..s1 - 1).each{|i|
(0..s2 - 1).each{|j|
ary[i + j] += f_ary[i] * b_ary[j]
}
}
ary
end
def power(ary, n)
return [1] if n == 0
mul(ary, power(ary, n - 1))
end
def A000594(n)
ary = [1]
# 無限積のうち必要なところだけ取り出す
(1..n - 1).each{|i|
b_ary = Array.new(i + 1, 0)
b_ary[0], b_ary[-1] = 1, -1
ary = mul(ary, b_ary)
}
# 24乗してx倍
power(ary, 24).unshift(0)[1..n]
end
ary = A000594(28)
# OEIS A000594のデータ
ary0 =
[1,-24,252,-1472,4830,-6048,-16744,84480,-113643,
-115920,534612,-370944,-577738,401856,1217160,
987136,-6905934,2727432,10661420,-7109760,
-4219488,-12830688,18643272,21288960,-25499225,
13865712,-73279080,24647168]
# 一致の確認
p ary == ary0
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。