2017年1月24日火曜日

170124

Ruby


Numerator of Bernoulli(36 * 37) ł 37

Bernoulli(2 * 666) の分子は37で割り切れないが、
Bernoulli(2 * 777) の分子は37で割り切れる。

def bernoulli(n)
  ary = []
  a = []
  (0..n).each{|i|
    a << 1r / (i + 1)
    i.downto(1){|j| a[j - 1] = j * (a[j - 1] - a[j])}
    ary << a[0] # Bn = a[0]
  }
  ary
end

def A(k, n)
  a = bernoulli(2 * n)
  ary = []
  (0..n).each{|i|
    j = a[2 * i].numerator
    ary << i if j % k == 0
  }
  ary
end

n = 777
p A(37, n)

出力結果
[16, 34, 37, 52, 70, 74, 88, 106, 111, 124, 142, 148, 160, 178, 185, 196, 214, 222, 232, 250, 259, 268, 286, 296, 304, 322, 333, 340, 358, 370, 376, 394, 407, 412, 430, 444, 448, 466, 481, 484, 502, 518, 520, 538, 555, 556, 574, 592, 610, 628, 629, 646, 664, 682, 700, 703, 718, 736, 740, 754, 772, 777]

0 件のコメント:

コメントを投稿

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