2018年2月25日日曜日

180225

Ruby


Sum_{n = 1..24} n^2 = 70^2(1)

仮面ライダービルドという番組では、毎回話数にちなんだ数式が出てくるらしい。
24 話は
第Sum_{n = 1..N} n^2 = m^2 話
と出てきたらしい。
non-trivial な解は(N, m) = (24, 70) だけであることが証明されているが、
これに関連した合同式が以下に載っているので、確認してみた。
https://arxiv.org/pdf/1408.2083.pdf

require 'prime'

def power0(a, n)
  return 1 if n == 0
  k = power0(a, n >> 1)
  k *= k
  return k if n & 1 == 0
  return k * a
end

# x > 0
def sigma(x, i)
  sum = 1
  pq = i.prime_division
  pq.each{|a, n| sum *= (power0(a, (n + 1) * x) - 1) / (power0(a, x) - 1)}
  sum
end

def A000521(n)
  s3 = [0] + (1..n + 1).map{|i| sigma(3, i)}
  s5 = [0] + (1..n + 1).map{|i| sigma(5, i)}
  ary = [1]
  (0..n).each{|i| ary << (1..i + 1).inject(0){|s, j| s + (504 * s5[j] - 240 * (i - j) * s3[j]) * ary[-j]} / (i + 1)}
  ary
end

def A(n)
  ary = [0, 1]
  (2..n).each{|i|
    s, t, u = 0, 1, 0
    (1..n).each{|j|
      t += 9 * j
      u += j
      break if i <= u
      s += (-1) ** (j % 2 + 1) * (2 * j + 1) * (i - t) * ary[-u]
    }
    ary << s / (i - 1)
  }
  ary
end

n = 24
# -1から
j_ary = A000521(n + 1)
t_ary = A(n)

sj = 0
(1..n).each{|i|
  sj += j_ary[i + 1] ** 2
  p sj
}

st = 0
(1..n).each{|i|
  st += t_ary[i] ** 2
  p st
}

p sj % 70
p st % 70

出力結果
38763309456
462020482247056
747476458624247956
410642171997238585492
111434641874810006945492
18191136786434088480554708
2012438256327271820435198933
163207370324148310682771198933
10252979903717047241162445935333
519540220693607026058959606895333
21897463285036869389800152685153769
786321943715813441660415677068283369
24522804473179162618215486599300233769
674662006053352720500322946677998467625
16586697380546568748122861685021923923250
368380134300903032793240735709663753196850
7459109851575547037101015852422721856622450
138788710970335909298902346913307828210388850
2389227204143285091714377049772906741585951350
38280520704849554688691895267401266006415391350
573828412677118995859016958585990858803229915766
8084885115050056947605509164143950252163341122166
107506556899252904588122918856018016231802824914566
1354122807420479577276982518165534609358397061559942
1
577
64081
2230865
25559765
62138069
342499605
7479370005
20394101454
33831547854
319641538398
457240989534
791022186178
952510430914
2433988896514
3408426379010
51100350791366
58539236105990
172205112522390
222753799779990
240557878762134
405184433315478
752756024181462
1205975842063062
42
42

0 件のコメント:

コメントを投稿