Ruby
オイラーの五角数定理を使うと高速に求まる。
オンライン整数列大辞典の
A010815(http://oeis.org/A010815/list)
と比較し、答え合わせしてみる。
def p0(n)
(3 * n * n - n) / 2
end
def p1(n)
(3 * n * n + n) / 2
end
def A010815(n)
ary = Array.new(n + 1, 0)
ary[0] = 1
i = 1
j = p0(i)
while j <= n
ary[j] = (-1) ** i
i += 1
j = p0(i)
end
i = 1
j = p1(i)
while j <= n
ary[j] = (-1) ** i
i += 1
j = p1(i)
end
ary
end
ary = A010815(92)
# OEIS A010815のデータ
ary0 =
[1,-1,-1,0,0,1,0,1,0,0,0,0,-1,0,0,-1,0,0,0,0,0,0,
1,0,0,0,1,0,0,0,0,0,0,0,0,-1,0,0,0,0,-1,0,0,0,0,0,
0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
# 一致の確認
p ary == ary0
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。