2016年5月16日月曜日

160516(3)

Ruby


Goldbach's conjecture(1)

この予想を組合せ論っぽく言い換えると次のようになる。

p が素数全体を動くとき、
(Σx^p)^2 の2 よりも大きな偶数次の係数は必ず1 以上。

(Σx^p)^2 の係数について、
オンライン整数列大辞典の
A073610(http://oeis.org/A073610/list)
と比較し、答え合わせしてみる。

require 'prime'

# m次以下を取り出す
def mul(f_ary, b_ary, m)
  s1, s2 = f_ary.size, b_ary.size
  ary = Array.new(s1 + s2 - 1, 0)
  s10 = [s1 - 1, m].min
  (0..s10).each{|i|
    s20 = [s2 - 1, m - i].min
    (0..s20).each{|j|
      ary[i + j] += f_ary[i] * b_ary[j]
    }
  }
  ary
end

def A073610(n)
  ary = Array.new(n + 1, 0)
  Prime.each(n).each{|i| ary[i] = 1}
  mul(ary, ary, n)[1..n]
end
ary = A073610(98)

# OEIS A073610のデータ
ary0 =
[0,0,0,1,2,1,2,2,2,3,0,2,2,3,2,4,0,4,2,4,2,5,0,6,
 2,5,0,4,0,6,2,4,2,7,0,8,0,3,2,6,0,8,2,6,2,7,0,10,
 2,8,0,6,0,10,2,6,0,7,0,12,2,5,2,10,0,12,0,4,2,10,
 0,12,2,9,2,10,0,14,0,8,2,9,0,16,2,9,0,8,0,18,2,8,
 0,9,0,14,0,6]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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