2017年4月30日日曜日

170430

Ruby


Glaisher's chi_4(n)(5)

一般に
1/4 * Sum_{a^2 + b^2 = n} (a + bi)^(4 * k)
の場合を計算してみた。

def G(a, n)
  ary = []
  (1..n).each{|j|
    s = 0
    (1..Math.sqrt(j).to_i).each{|k|
      m = Math.sqrt(j - k * k).to_i
      if m * m == j - k * k
        x = (k + m * 1i) ** a
        s += x
      end
    }
    ary << s.real
  }
  ary
end

n = 50
0.step(48, 4){|i| p [i, G(i, n)]}

出力結果
[0, [1, 1, 0, 1, 2, 0, 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 2, 1, 0, 2, 0, 0, 0, 0, 3, 2, 0, 0, 2, 0, 0, 1, 0, 2, 0, 1, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 1, 3]]
[4, [1, -4, 0, 16, -14, 0, 0, -64, 81, 56, 0, 0, -238, 0, 0, 256, 322, -324, 0, -224, 0, 0, 0, 0, -429, 952, 0, 0, 82, 0, 0, -1024, 0, -1288, 0, 1296, 2162, 0, 0, 896, -3038, 0, 0, 0, -1134, 0, 0, 0, 2401, 1716]]
[8, [1, 16, 0, 256, -1054, 0, 0, 4096, 6561, -16864, 0, 0, -478, 0, 0, 65536, -63358, 104976, 0, -269824, 0, 0, 0, 0, 720291, -7648, 0, 0, -1407838, 0, 0, 1048576, 0, -1013728, 0, 1679616, 925922, 0, 0, -4317184, 3577922, 0, 0, 0, -6915294, 0, 0, 0, 5764801, 11524656]]
[12, [1, -64, 0, 4096, 23506, 0, 0, -262144, 531441, -1504384, 0, 0, 6911282, 0, 0, 16777216, -47295038, -34012224, 0, 96280576, 0, 0, 0, 0, 308391411, -442322048, 0, 0, -173439758, 0, 0, -1073741824, 0, 3026882432, 0, 2176782336, -2050092718, 0, 0, -6161956864, -2285065118, 0, 0, 0, 12492052146, 0, 0, 0, 13841287201, -19737050304]]
[16, [1, 256, 0, 65536, 329666, 0, 0, 16777216, 43046721, 84394496, 0, 0, -1631232958, 0, 0, 4294967296, -9937278718, 11019960576, 0, 21604990976, 0, 0, 0, 0, -43908219069, -417595637248, 0, 0, 981515008322, 0, 0, 1099511627776, 0, -2543943351808, 0, 2821109907456, -6167627357758, 0, 0, 5530877689856, -3168324620158, 0, 0, 0, 14191040325186, 0, 0, 0, 33232930569601, -11240504081664]]
[20, [1, -1024, 0, 1048576, -19306574, 0, 0, -1073741824, 3486784401, 19769931776, 0, 0, 190840318802, 0, 0, 1099511627776, 750325121602, -3570467226624, 0, -20244410138624, 0, 0, 0, 0, 277376367976851, -195420486453248, 0, 0, 203154876160402, 0, 0, -1125899906842624, 0, -768332924520448, 0, 3656158440062976, -9492206529013198, 0, 0, 20730275981950976, 16082418088944802, 0, 0, 0, -67317861059952174, 0, 0, 0, 79792266297612001, -284033400808295424]]
[24, [1, 4096, 0, 16777216, 64250786, 0, 0, 68719476736, 282429536481, 263171219456, 0, 0, 1169648638562, 0, 0, 281474976710656, 1071576144961922, 1156831381426176, 0, 1077949314891776, 0, 0, 0, 0, -55476481273772829, 4790880823549952, 0, 0, -677548216755839518, 0, 0, 1152921504606846976, 0, 4389175889764032512, 0, 4738381338321616896, -8963023859283443038, 0, 0, 4415280393796714496, -39905458007232018238, 0, 0, 0, 18146319708519924066, 0, 0, 0, 191581231380566414401, -227231667297373507584]]
[28, [1, -16384, 0, 268435456, 11167097746, 0, 0, -4398046511104, 22876792454961, -182961729470464, 0, 0, -5728966721281678, 0, 0, 72057594037927936, 282379614196418242, -374813367582081024, 0, 2997644975644082176, 0, 0, 0, 0, 87451169084099139891, 93863390761479012352, 0, 0, -199246537739584127438, 0, 0, -1180591620717411303424, 0, -4626507598994116476928, 0, 6140942214464815497216, -1588134303148899671278, 0, 0, -49113415280952642371584, 75787711604536118762722, 0, 0, 0, 255467377459504789617906, 0, 0, 0, 459986536544739960976801, -1432799954273880307974144]]
[32, [1, 65536, 0, 4294967296, -196496109694, 0, 0, 281474976710656, 1853020188851841, -12877569044905984, 0, 0, 1330087744899070082, 0, 0, 18446744073709551616, 1427124567881986562, 121439531096594251776, 0, -843944364926958567424, 0, 0, 0, 0, 15327656759489517883011, 87168630449705456893952, 0, 0, 462878764200641031680642, 0, 0, 1208925819614629174706176, 0, 93528035680713871327232, 0, 7958661109946400884391936, 13364603395730595798238082, 0, 0, -55308737899853156674699264, -117479780930606773712920318, 0, 0, 0, -364111258293827945049846654, 0, 0, 0, 1104427674243920646305299201, 1004513313389905043981008896]]
[36, [1, -262144, 0, 68719476736, -4228490555534, 0, 0, -18014398509481984, 150094635296999121, 1108473428189904896, 0, 0, -152935864759452674158, 0, 0, 4722366482869645213696, -23125093646441048317118, -39346408075296537575424, 0, -290579658359414429057024, 0, 0, 0, 0, 3328217149873384131384531, 40091219331501961814474752, 0, 0, 178879349123443365836288722, 0, 0, -1237940039285380274899124224, 0, 6062104548852642170042580992, 0, 10314424798490535546171949056, 31870691915293393072612781042, 0, 0, 76173713960970336090724499456, 142745614735837791048783844642, 0, 0, 0, -634673747789680938240399685614, 0, 0, 0, 2651730845859653471779023381601, -872472156536408409737666494464]]
[40, [1, 1048576, 0, 1099511627776, 182008936336226, 0, 0, 1152921504606846976, 12157665459056928801, 190850202427694514176, 0, 0, -1589900269312604162398, 0, 0, 1208925819614629174706176, -7565475025188088957756798, 12748236216396078174437376, 0, 200120941860822202896613376, 0, 0, 0, 0, 24032305888515086764969532451, -1667131264794733222190645248, 0, 0, -312717248594471233529540479198, 0, 0, 1267650600228229401496703205376, 0, -7932975540011625566968792219648, 0, 13367494538843734067838845976576, 43857017456118466671167150613602, 0, 0, 209842016732653502224519267352576, -101691394325222881712409889310398, 0, 0, 0, 2212803758534626401134640679045026, 0, 0, 0, 6366805760909027985741435139224001, 25199699179355595619664692459339776]]
[44, [1, -4194304, 0, 17592186044416, 94681488501586, 0, 0, -73786976294838206464, 984770902183611232881, -397122945948156166144, 0, 0, 4746397497491127617277362, 0, 0, 309485009821345068724781056, -504652011666161847903676478, -4130428534112329328517709824, 0, 1665654360682135200282443776, 0, 0, 0, 0, -5675377301815925525037469625229, -19907834009317026529656908546048, 0, 0, -152160779312124788381478442879118, 0, 0, -1298074214633706907132624082305024, 0, 2116663951139429303309781866381312, 0, 17324272922341479351919144385642496, 35088063909469944088702337296151762, 0, 0, -6986260747626522399085455059451904, -94426535081528617629501241894433438, 0, 0, 0, 93239574851794058485356430783849266, 0, 0, 0, 15286700631942576193765185769276826401, 23804257718515743693366758998976495616]]
[48, [1, 16777216, 0, 281474976710656, -115081126049163454, 0, 0, 4722366482869645213696, 79766443076872509863361, -1930740909250041887064064, 0, 0, -1084233462811051085429762878, 0, 0, 79228162514264337593543950336, 469378091822230262815821699842, 1338258845052394702439737982976, 0, -32392457274524350748321407565824, 0, 0, 0, 0, 9690951893942946361799831871319491, -18190419000008971247289584632987648, 0, 0, 208701784399551975874725687351552962, 0, 0, 1329227995784915872903807060280344576, 0, 7874857632169390720997808875736399872, 0, 22452257707354557240087211123792674816, -6334717520302422495126844926858828478, 0, 0, -543455252465466329764349892155863465984, 574223389697520075808965854102928347522, 0, 0, 0, -9179612090222986848475130127017894808894, 0, 0, 0, 36703368217294125441230211032033660188801, 162587193170289902788329928068811305517056]]

2017年4月25日火曜日

170425

Ruby


Glaisher's chi_4(n)(4)

丸善から出版されているG.H.Hardy の
"Ramanujan: Twelve Lectures on Subjects Suggested by His Life and Work"
の翻訳を読んでいて、以前とは別の方法で計算したくなったので書いてみた。

n = 50

ary = []
(1..n).each{|j|
  p j
  s = 0
  (1..Math.sqrt(j).to_i).each{|k|
    m = Math.sqrt(j - k * k).to_i
    if m * m == j - k * k
      x = (k + m * 1i) ** 4
      s += x
      p [k, m, x]
    end
  }
  ary << s.real
}
p ary

出力結果
1
[1, 0, (1+0i)]
2
[1, 1, (-4+0i)]
3
4
[2, 0, (16+0i)]
5
[1, 2, (-7-24i)]
[2, 1, (-7+24i)]
6
7
8
[2, 2, (-64+0i)]
9
[3, 0, (81+0i)]
10
[1, 3, (28-96i)]
[3, 1, (28+96i)]
11
12
13
[2, 3, (-119-120i)]
[3, 2, (-119+120i)]
14
15
16
[4, 0, (256+0i)]
17
[1, 4, (161-240i)]
[4, 1, (161+240i)]
18
[3, 3, (-324+0i)]
19
20
[2, 4, (-112-384i)]
[4, 2, (-112+384i)]
21
22
23
24
25
[3, 4, (-527-336i)]
[4, 3, (-527+336i)]
[5, 0, (625+0i)]
26
[1, 5, (476-480i)]
[5, 1, (476+480i)]
27
28
29
[2, 5, (41-840i)]
[5, 2, (41+840i)]
30
31
32
[4, 4, (-1024+0i)]
33
34
[3, 5, (-644-960i)]
[5, 3, (-644+960i)]
35
36
[6, 0, (1296+0i)]
37
[1, 6, (1081-840i)]
[6, 1, (1081+840i)]
38
39
40
[2, 6, (448-1536i)]
[6, 2, (448+1536i)]
41
[4, 5, (-1519-720i)]
[5, 4, (-1519+720i)]
42
43
44
45
[3, 6, (-567-1944i)]
[6, 3, (-567+1944i)]
46
47
48
49
[7, 0, (2401+0i)]
50
[1, 7, (2108-1344i)]
[5, 5, (-2500+0i)]
[7, 1, (2108+1344i)]
[1, -4, 0, 16, -14, 0, 0, -64, 81, 56, 0, 0, -238, 0, 0, 256, 322, -324, 0, -224, 0, 0, 0, 0, -429, 952, 0, 0, 82, 0, 0, -1024, 0, -1288, 0, 1296, 2162, 0, 0, 896, -3038, 0, 0, 0, -1134, 0, 0, 0, 2401, 1716]

2017年4月23日日曜日

170423(3)

Ruby


A093573 の素数の位置

奇数だけの行と偶数だけの行が交互に並ぶので、
2を除けば、素数が現れる行と素数が現れない行が交互に並ぶはずと考えて、
実験してみた。
予想以上に、素数が連続して並んでいた。

require 'prime'

n = 2 ** 12
@ary = [1]
s = 1
s_ary = [['□'], ['□']]
(1..n).each{|i|
  j = @ary[i / 2]
  j *= (-1) ** (i / 2) if i % 2 > 0
  @ary << j
  s += j
  str = '□'
  str = '■' if i.prime?
  if s_ary[s] == nil
    s_ary[s] = [str]
  else
    s_ary[s] << str
  end
}
(1..s_ary[1..-1].size - 1).each{|i| p s_ary[i].join}

出力結果
"□"
"□■"
"■□□"
"■■■□"
"□□□□□"
"□■■■□□"
"□□□□□□□"
"□■■■■□■□"
"□□□□□□□□□"
"□□□□□■□■□■"
"□□□□□□□□□□□"
"■□□■□■□■■■■□"
"□□□□□□□□□□□□□"
"■■■□□■■□■□■□□□"
"□□□□□□□□□□□□□□□"
"□□□□□□□■□□□■□□□□"
"□□□□□□□□□□□□□□□□□"
"□■□□□■□□□■■□□■■□□□"
"□□□□□□□□□□□□□□□□□□□"
"□□□□■■□□■□□■□■■■■□□■"
"□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□■□■□□□□□■■□■■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□"
"■■■□■□□■■□□□□■■□□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□□□□□■■□□□□□□□■□■□■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□□□□□□□■□■■□■□□□■■□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■■□□■■□□□□■□□■□□■□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□■□□■□□□■□■■□■□□■□■□□□■□■■□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■■□□□□■■□□■■□□□□□■■□□□□□■□□■□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■□□□□■□□□□■□■□□■□□□□■□■□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□□□□□□■□□□□□■□□□□□□□□■□□□■■■■□□■■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□□□■□■■■□□■□□□□□□□□□□□□□■□□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■■■■□■■□□□■□□■□□■■□□□□□□□□■■□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□■□□□■□□□□□■□■■■□■□□■□□□□■□□□■□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■■□■□□□□□□□■□■□□□■□□□□□□■□□□□□■□□□■■□□□■□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□■□□□■■□■□□□■□■□□□□■■□□□□□■■■□□□□□□■□□□■□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□□□□□□□■□□■□■□□□□□□□■□□□□□□■□■□■■□□■□■□□□□■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□■□■□■□□□□□■■■□□□□□□□□□■■□□□□■□■■□■□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□□□□□□■□■□□■□□■■■■□□■□□□■□□□■□□□□■□□□■□□■□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□■□□□■□□□■□■■□□□□□□■□□■□□□■□■□■□□■□□□□■□■□□□□■■■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□□□■■□□□□□□□□□□□□□□□□■■□□□□□□□■□□□□□□□□□□□□□□■□□□□□■□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□□□□■□■□□□□■□□□□□□■□□□■□■□□□■■□□■□□■□□■□□■□□□■□□□■■□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□■□□□■□□□□□□□□□■□■■■□□■□□□■□■□□□□□■■□□□■□□■■□□□■□□■□■■□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■■□□■□□■□□□□□□□■■□□□□□□□□□□□■□□■□□□□□□□■□□□□□■■□□□□□□□■□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■□□□□□□□□□□■□■□■□□■□■□□□■□□□□■□□□□■■■□□□□□□□□□□■■■□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□□□□□□■□□□□■□□□□■■■□□■■□■■□□□□□□■□□□□■■■□■□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■■■■□□□□□□□■□□■□□□□□□□□■□□□□□□□■□□□□■□■□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□□□□■■□■□■□□□□□□■□□■■□□□□□■■□□■■□■□□□□■□□□□□□■□□□■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■■□■□□■□■□■□■□□□□□□■□□□■□□□■□□□□■□□□□■□□□■□■□□□□■■□■□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□□□□□□□□□□□□□□□■□□■□□□□□□■□□□□□■□■□□□□□□□□□■■□□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□□■■■□□□■□□□□■□□□□□□□■■□□■■■□■□□□■□□■□□□■□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■■□□□□□□■□■□□□□□□■□■□□□□□□□■□□□■■□■□■□■□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□■□■□□□■■□□□■□□□■□□□□□□□□■■□□■□□□□□□■□□■□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□□□■■■□□□□■□■□□■□□□□□□■□□■□■□□□□□□■■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□■□■■□□□□□□□□■□□□□□□■□□□■□□□□□□□□■□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□■■□□■□■□□□□□□□□□□□□□□□□□□□■□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□■□□□□□■□■■□□□□■□□□■□■■□□□□□■□■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□■□■□□■□□■■□□□□■□□■□■□□□□□■□■□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■■□□□■□□□■□□□□□□□□□■□□■□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"■□□■□■□□□□□□■■■□□■■□□□□□□□■□■□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□■□□□■□□□□□□□□■□□□■□□□□■□□□□■"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□■□□■□□■□□■□□■□□□□■□□□□"
"□□□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□□■□□□□□□□□■□□■■■□■■□"
"□□□□□□□□□□□□□□□□□□□□□□□□□"
"□□□■□□■□■□□□□□□■□□□□□■□□"
"□□□□□□□□□□□□□□□□□□□□□□□"
"■□■□■□□□□□□□■□□■□□□□■□"
"□□□□□□□□□□□□□□□□□□□□□"
"□□□□□□□□□■□■□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□"
"□□■□□□□□■■□□□■□■□□"
"□□□□□□□□□□□□□□□□□"
"□■□□■□□■□□□□□□□□"
"□□□□□□□□□□□□□□□"
"■□□□□□■□□□■■□□"
"□□□□□□□□□□□□□"
"■□□□□□□■■■■□"
"□□□□□□□□□□□"
"□■□■■□■□□□"
"□□□□□□□□□"
"□■□■■□■□"
"□□□□□□□"
"□□□□□□"
"□□□□□"
"□□□□"
"□□□"
"■■"

170423(2)

Ruby


(q^(-1/5) * R(q))^k

R(q) をRogers-Ramanujan continued fraction とし、
q^(-1/5) * R(q) のk乗を求めてみた。

def s(k, m, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == m}
  s
end

def A(k, n)
  ary = [1]
  a = [0] + (1..n).map{|i| s(5, 1, i) + s(5, 4, i) - s(5, 2, i) - s(5, 3, i)}
  (1..n).each{|i| ary << (1..i).inject(0){|s, j| s - k * a[j] * ary[-j]} / i}
  ary
end

n = 50
-12.upto(12){|i| p [i, A(i, n)]}

出力結果
[-12, [1, 12, 66, 208, 363, 144, -846, -1728, 273, 5940, 7152, -8544, -31328, -13896, 68286, 113248, -49716, -333708, -226980, 559776, 1088016, -205264, -2637306, -2072640, 3758552, 7937772, -573882, -17004528, -14235543, 21634056, 47763486, -563424, -94007685, -80925372, 110254230, 248894112, 5569776, -460233360, -400720638, 507688064, 1157634801, 49340880, -2040275052, -1781566800, 2146085694, 4908249776, 270470166, -8324985024, -7258290919, 8429111520, 19259764860]]
[-11, [1, 11, 55, 154, 220, -22, -682, -891, 946, 4015, 2310, -8700, -16753, 3982, 47729, 41536, -72864, -173580, -4411, 391622, 388960, -489566, -1300926, -169345, 2565915, 2682999, -2800094, -7881984, -1424555, 14187580, 15122822, -14100867, -40818041, -8405783, 68831499, 73713288, -63884645, -187221892, -41049074, 300402069, 321058441, -264775808, -778765691, -176168784, 1201506889, 1277513600, -1016869810, -2987754539, -686500551, 4464395892, 4715935928]]
[-10, [1, 10, 45, 110, 120, -98, -485, -340, 1045, 2320, -174, -6580, -6995, 9120, 26970, 5998, -56950, -69760, 59785, 209470, 67523, -380000, -487155, 337020, 1282540, 466352, -2104240, -2734190, 1663345, 6599200, 2510530, -10102740, -13118530, 7380420, 29800970, 11533800, -43312975, -55908670, 29856435, 121296270, 47153292, -169326330, -216794900, 111693820, 453639990, 176106794, -612918540, -777964670, 390448770, 1580419670, 610948982]]
[-9, [1, 9, 36, 75, 54, -117, -303, -27, 855, 1087, -1080, -4041, -1635, 8100, 12060, -6588, -33219, -17064, 55029, 86139, -35343, -205974, -111996, 305973, 482736, -167859, -1053612, -581959, 1450638, 2277414, -720987, -4671711, -2576943, 6093534, 9473373, -2824029, -18545583, -10165032, 23196852, 35678328, -10227222, -67350339, -36601215, 81483183, 124005132, -34570244, -227236941, -122408271, 267459084, 403024239, -110094912]]
[-8, [1, 8, 28, 48, 14, -104, -160, 112, 573, 336, -1112, -2000, 602, 5192, 3680, -7776, -14970, 2520, 32680, 23840, -43362, -83696, 10688, 166336, 120929, -202864, -387928, 41552, 721344, 518200, -831392, -1567936, 153208, 2780992, 1972020, -3067952, -5710154, 524656, 9756720, 6831888, -10404845, -19126232, 1693320, 31719984, 21959178, -32893728, -59802336, 5154736, 96738057, 66286688, -98010020]]
[-7, [1, 7, 21, 28, -7, -77, -63, 141, 315, -28, -791, -721, 1071, 2569, 119, -5145, -4788, 5922, 14329, 980, -25956, -23619, 27433, 65086, 5054, -109739, -97986, 108864, 254002, 20153, -408044, -357665, 387436, 889077, 71337, -1374246, -1186647, 1259531, 2850750, 227493, -4276111, -3643794, 3811186, 8521205, 676788, -12464011, -10503535, 10850504, 24008957, 1892218, -34387689]]
[-6, [1, 6, 15, 14, -15, -48, -8, 114, 132, -140, -432, -102, 808, 930, -771, -2446, -621, 4002, 4448, -3522, -10767, -2628, 16446, 17754, -13463, -40332, -9744, 58338, 61647, -45768, -134315, -31782, 187119, 194342, -141390, -408918, -95570, 552048, 565320, -405948, -1158321, -267150, 1525548, 1544100, -1095213, -3092344, -706296, 3987330, 3996003, -2807736, -7852974]]
[-5, [1, 5, 10, 5, -15, -24, 15, 70, 30, -125, -175, 95, 420, 180, -615, -826, 410, 1760, 705, -2415, -3100, 1530, 6270, 2460, -8090, -10174, 4840, 19570, 7500, -24360, -30024, 14130, 55970, 21155, -67380, -81926, 37895, 148410, 55305, -174500, -209577, 96025, 371620, 137160, -427665, -508800, 230670, 885070, 323605, -1001340, -1181123]]
[-4, [1, 4, 6, 0, -11, -8, 18, 32, -10, -72, -42, 96, 153, -40, -288, -160, 344, 524, -146, -944, -501, 1080, 1602, -416, -2727, -1436, 2970, 4336, -1131, -7176, -3694, 7616, 10942, -2776, -17562, -8960, 18136, 25784, -6528, -40608, -20472, 41176, 57974, -14464, -89538, -44808, 89202, 124608, -30961, -189736, -94188]]
[-3, [1, 3, 3, -2, -6, 0, 12, 9, -15, -28, 3, 48, 33, -48, -87, 7, 135, 90, -134, -234, 21, 356, 237, -330, -575, 42, 831, 540, -762, -1296, 107, 1848, 1191, -1633, -2769, 210, 3842, 2448, -3366, -5634, 444, 7722, 4889, -6624, -11028, 840, 14871, 9342, -12636, -20877, 1608]]
[-2, [1, 2, 1, -2, -2, 2, 5, 0, -8, -6, 7, 14, 1, -18, -15, 14, 30, 2, -40, -32, 32, 66, 6, -82, -65, 60, 125, 8, -157, -120, 117, 238, 19, -286, -222, 206, 419, 28, -507, -386, 366, 732, 55, -864, -659, 610, 1224, 86, -1442, -1090, 1016]]
[-1, [1, 1, 0, -1, 0, 1, 1, -1, -2, 0, 2, 2, -1, -3, -1, 3, 3, -2, -5, -1, 6, 5, -3, -8, -2, 8, 7, -5, -12, -2, 13, 12, -7, -18, -4, 18, 16, -11, -26, -5, 27, 24, -14, -37, -8, 37, 33, -21, -52, -10, 53]]
[0, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
[1, [1, -1, 1, 0, -1, 1, -1, 1, 0, -1, 2, -3, 2, 0, -2, 4, -4, 3, -1, -3, 6, -7, 5, 0, -5, 9, -10, 7, -1, -7, 14, -16, 11, -1, -11, 20, -22, 16, -2, -15, 29, -33, 23, -2, -23, 41, -45, 32, -4, -30, 57]]
[2, [1, -2, 3, -2, -1, 4, -6, 6, -3, -2, 9, -16, 17, -10, -5, 24, -36, 36, -21, -10, 46, -74, 77, -42, -22, 94, -144, 142, -78, -38, 172, -266, 266, -146, -73, 312, -471, 464, -251, -122, 534, -814, 801, -432, -213, 910, -1364, 1328, -713, -344, 1485]]
[3, [1, -3, 6, -7, 3, 6, -17, 24, -21, 6, 21, -54, 77, -72, 24, 64, -159, 216, -190, 57, 159, -392, 534, -468, 144, 381, -924, 1220, -1044, 312, 833, -1992, 2625, -2244, 669, 1746, -4138, 5382, -4530, 1332, 3474, -8184, 10591, -8886, 2607, 6724, -15711, 20160, -16771, 4872, 12537]]
[4, [1, -4, 10, -16, 15, 0, -30, 64, -81, 60, 12, -128, 250, -312, 234, 32, -443, 848, -1014, 720, 109, -1312, 2448, -2880, 2033, 280, -3550, 6512, -7513, 5184, 744, -8832, 15980, -18252, 12492, 1712, -20745, 37168, -41942, 28352, 3918, -46288, 82146, -92000, 61785, 8384, -99174, 174720, -194134, 129288, 17546]]
[5, [1, -5, 15, -30, 40, -26, -30, 125, -220, 245, -124, -180, 615, -1010, 1085, -550, -705, 2415, -3850, 3980, -1926, -2460, 8090, -12550, 12715, -6074, -7500, 24360, -37150, 36930, -17251, -21155, 67380, -101210, 99295, -45924, -55305, 174500, -259140, 251275, -114750, -137160, 427665, -628760, 604095, -273626, -323605, 1001340, -1460180, 1391295, -624848]]
[6, [1, -6, 21, -50, 84, -90, 15, 180, -465, 700, -648, 72, 1097, -2580, 3648, -3242, 423, 4902, -11256, 15408, -13227, 1650, 18738, -41724, 55617, -46668, 5838, 63070, -137982, 180540, -148656, 18150, 194097, -417430, 537648, -436392, 52910, 553836, -1176561, 1496930, -1200285, 143478, 1488820, -3127542, 3937044, -3125154, 370716, 3801276, -7913772, 9873882, -7769451]]
[7, [1, -7, 28, -77, 154, -217, 161, 153, -791, 1589, -2044, 1393, 1029, -5194, 9766, -11886, 7854, 5005, -25599, 46718, -55055, 35343, 21175, -106484, 189049, -217056, 136318, 78498, -389761, 678720, -764477, 471541, 265097, -1296771, 2220792, -2461759, 1496320, 825643, -3991211, 6745704, -7381913, 4431749, 2411821, -11530029, 19265841, -20850886, 12386906, 6663874, -31560228, 52229899, -55998628]]
[8, [1, -8, 36, -112, 258, -440, 496, -112, -1049, 3008, -5024, 5360, -1686, -7608, 21376, -33856, 34543, -11472, -41404, 114544, -175940, 174296, -58176, -189648, 514298, -769664, 744088, -246336, -760302, 2026752, -2973920, 2821440, -924075, -2754880, 7231920, -10437504, 9746754, -3156520, -9190608, 23812704, -33904299, 31248712, -10015232, -28651536, 73391344, -103282720, 94125760, -29878640, -84321679, 213851288, -297958584]]
[9, [1, -9, 45, -156, 405, -801, 1149, -891, -855, 4790, -10377, 14643, -11859, -4617, 37629, -79635, 107685, -85473, -22238, 222066, -459927, 604212, -470070, -97497, 1091517, -2213721, 2838285, -2165007, -395307, 4681476, -9324735, 11726838, -8797455, -1482462, 18079857, -35454276, 43868498, -32431977, -5193486, 64142478, -124102764, 151475247, -110588673, -17095158, 212139153, -405679769, 489372516, -353362500, -53284155, 661073463, -1251327069]]
[10, [1, -10, 55, -210, 605, -1352, 2300, -2630, 570, 6160, -18522, 32990, -38590, 17410, 47685, -156802, 272890, -310500, 152005, 293580, -992876, 1689240, -1877000, 935940, 1528385, -5203696, 8670710, -9431000, 4695055, 6993230, -23725756, 38827080, -41481615, 20507870, 28831575, -97132194, 156500450, -164639160, 80660650, 109125120, -364517778, 579443490, -601542940, 291999320, 384334330, -1272738402, 1999485490, -2051852270, 987093095, 1272932000, -4179922966]]
[11, [1, -11, 66, -275, 869, -2156, 4191, -6006, 4620, 5181, -28567, 64481, -96602, 87120, 16467, -251394, 585981, -862455, 781869, 9570, -1694869, 3957690, -5706403, 5118102, -279202, -9495167, 22012485, -31127305, 27513706, -2334640, -46296943, 106191976, -147598473, 128617808, -12933437, -202295874, 458844166, -628202520, 540216358, -58910874, -808452601, 1813784654, -2450591627, 2082298097, -237047955, -2998544692, 6658914075, -8892531846, 7475107233, -870993739, -10436689692]]
[12, [1, -12, 78, -352, 1209, -3288, 7138, -12000, 13596, -2080, -36606, 111360, -206181, 256200, -139284, -285984, 1071087, -2009256, 2489364, -1528464, -1838544, 7740064, -14427624, 17621568, -11162727, -10219044, 46056996, -84876912, 102019968, -64998576, -50685750, 237269856, -431725065, 511081936, -324642030, -228454608, 1091778688, -1962068232, 2290731408, -1445700960, -949337475, 4583473284, -8141849946, 9387812304, -5879310774, -3676838200, 17824500348, -31325988576, 35717952769, -22191221580, -13392004356]]

170423

Ruby


5/2

Clifford A. Pickover のA Passion for Mathematics に
以下の無限積が載っていた。
Product_{i>=1} (prime(i)^2 + 1)/(prime(i)^2 - 1) = 5/2
そこで、
Product_{i=1..n} (prime(i)^2 + 1)/(prime(i)^2 - 1) = Product_{i=1..n} (1 + 2/(prime(i)^2 - 1))
を計算してみた。

require 'prime'

n = 30
s = 1
Prime.take(n).each_with_index{|e, i| p [i + 1, s *= 1 + 2r / (e * e - 1)]}

出力結果
[1, (5/3)]
[2, (25/12)]
[3, (325/144)]
[4, (8125/3456)]
[5, (99125/41472)]
[6, (8425625/3483648)]
[7, (1221715625/501645312)]
[8, (44226105625/18059231232)]
[9, (11719917990625/4767637045248)]
[10, (986817094810625/400481511800832)]
[11, (94931804520782125/38446225132879872)]
[12, (65028286096735755625/26297217990889832448)]
[13, (10937757721470954096125/4417932622469491851264)]
[14, (10117425892360632538915625/4082169743161810470567936)]
[15, (11179755611058498955501765625/4506715396450638759507001344)]
[16, (1208273587195168540959998515625/486725262816668986026756145152)]
[17, (14507615967633023653871430453125/5840703153800027832321073741824)]
[18, (5399734663153011403970946414653125/2172741573213610353623439431958528)]
[19, (713082606986971211877339688288015625/286801887664196566678294005018525696)]
[20, (359536250442830885028554670834817478125/144548151382755069605860178529336950784)]
[21, (25896327227841738070299951291210502140625/10407466899558365011621932854112260456448)]
[22, (1243422111970677915652402276613353495090625/499558411178801520557852776997388501909504)]
[23, (104477784774121595595671362022756165624078125/41962906539019327726859633267780634160398336)]
[24, (82767301098059128030890852994427434407394690625/33234621978903307559672829548082262255035482112)]
[25, (389420151666368197385341463338781078886792019390625/156335661788761158760700990194178961647686907854848)]
[26, (4673958102706221587912063069390875960944767272733125/1876027941465133905128411882330147539772242894258176)]
[27, (112196143596635771601237532050310393542135703085290625/45024670595163213723081885175923540954533829462196224)]
[28, (12119300416806411177680846622415603830730696229496015625/4862664424277627082092843598999742423089653581917192192)]
[29, (14400152755249377761320381956754220471674213259887165765625/5776845336041820973526298195611693998630508455317624324096)]
[30, (91944975342267277006030638793875697711639851664379553413515625/36879380625290985094991887680785054487257165978747713685028864)]

2017年4月2日日曜日

170402

Ruby


A109091 の計算

二通りで計算してみたが、後者の方がコードがシンプル。

# m次以下を取り出す
def mul(f_ary, b_ary, m)
  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[0..m]
end

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

# m次以下を取り出す
def power(ary, n, m)
  return [1] if n == 0
  k = power(ary, n >> 1, m)
  k = mul(k, k, m)
  return k if n & 1 == 0
  return mul(k, ary, m)
end

def f(ary, k, n)
  aryk = Array.new(n + 1, 0)
  (0..n / k).each{|i| aryk[k * i] = ary[i]}
  aryk
end

def A(k, n)
  ary = A010815(n)
  aryk = power(ary, k, n)
  ps = Array.new(n + 1, 0)
  ps[0] = 1
  (1..n).each{|num|
    (num..n).each{|i|
      ps[i] += ps[i - num]
    }
  }
  psk = f(ps, k, n)
  mul(aryk, psk, n)
end

def A109091_1(n)
  ary = A(5, n)
  (1..n).map{|i| - ary[i] / 5}
end

def s(k, m, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == m}
  s
end

def A109091_2(n)
  (1..n).map{|i| s(5, 1, i) + s(5, 4, i) - s(5, 2, i) - s(5, 3, i)}
end

n = 1000
p ary = A109091_1(n)
p ary == A109091_2(n)

出力結果
[1, -1, -2, 3, 1, 2, -6, -5, 7, -1, 12, -6, -12, 6, -2, 11, -16, -7, 20, 3, 12, -12, -22, 10, 1, 12, -20, -18, 30, 2, 32, -21, -24, 16, -6, 21, -36, -20, 24, -5, 42, -12, -42, 36, 7, 22, -46, -22, 43, -1, 32, -36, -52, 20, 12, 30, -40, -30, 60, -6, 62, -32, -42, 43, -12, 24, -66, -48, 44, 6, 72, -35, -72, 36, -2, 60, -72, -24, 80, 11, 61, -42, -82, 36, -16, 42, -60, -60, 90, -7, 72, -66, -64, 46, 20, 42, -96, -43, 84, 3, 102, -32, -102, 60, 12, 52, -106, -60, 110, -12, 72, -66, -112, 40, -22, 90, -84, -60, 96, 10, 133, -62, -84, 96, 1, 42, -126, -85, 84, 12, 132, -72, -120, 66, -20, 80, -136, -44, 140, -18, 92, -72, -144, 77, 30, 72, -86, -108, 150, 2, 152, -100, -112, 72, 32, 72, -156, -80, 104, -21, 132, -61, -162, 126, -24, 82, -166, -60, 157, 16, 140, -126, -172, 60, -6, 132, -120, -90, 180, 21, 182, -72, -124, 110, -36, 64, -192, -138, 120, -20, 192, -86, -192, 96, 24, 129, -196, -84, 200, -5, 132, -102, -180, 96, 42, 102, -154, -132, 240, -12, 212, -156, -144, 106, -42, 100, -192, -110, 144, 36, 192, -72, -222, 126, 7, 112, -226, -120, 230, 22, 144, -150, -232, 84, -46, 180, -160, -96, 240, -22, 242, -133, -182, 186, 43, 84, -240, -160, 164, -1, 252, -126, -264, 126, 32, 171, -256, -84, 216, -36, 210, -132, -262, 120, -52, 120, -180, -198, 270, 20, 272, -176, -144, 136, 12, 132, -276, -140, 224, 30, 282, -92, -282, 216, -40, 144, -252, -147, 273, -30, 192, -216, -292, 86, 60, 180, -240, -150, 264, -6, 252, -152, -204, 220, 62, 112, -306, -216, 204, -32, 312, -120, -312, 156, -42, 240, -316, -104, 360, 43, 212, -132, -320, 183, -12, 162, -220, -210, 276, 24, 332, -246, -252, 166, -66, 132, -336, -157, 224, -48, 384, -140, -300, 210, 44, 172, -346, -180, 350, 6, 240, -252, -352, 120, 72, 270, -192, -180, 360, -35, 381, -182, -266, 216, -72, 124, -366, -242, 294, 36, 312, -192, -372, 192, -2, 230, -360, -120, 380, 60, 252, -192, -382, 170, -72, 192, -294, -288, 390, -24, 352, -215, -264, 196, 80, 252, -396, -200, 240, 11, 402, -132, -384, 306, 61, 180, -432, -160, 410, -42, 272, -306, -360, 154, -82, 252, -280, -240, 420, 36, 422, -212, -322, 260, -16, 144, -372, -318, 288, 42, 432, -220, -432, 192, -60, 330, -440, -144, 440, -60, 301, -192, -442, 216, 90, 222, -300, -258, 450, -7, 504, -336, -304, 226, 72, 200, -456, -230, 320, -66, 462, -144, -462, 330, -64, 232, -466, -252, 396, 46, 312, -300, -504, 160, 20, 288, -364, -240, 480, 42, 432, -242, -264, 399, -96, 182, -486, -310, 324, -43, 492, -252, -480, 240, 84, 352, -432, -164, 500, 3, 332, -252, -502, 210, 102, 264, -314, -378, 510, -32, 432, -341, -400, 256, -102, 252, -552, -216, 344, 60, 522, -210, -522, 396, 12, 262, -512, -264, 507, 52, 420, -360, -504, 180, -106, 330, -360, -270, 516, -60, 542, -272, -364, 336, 110, 144, -546, -408, 434, -12, 600, -220, -480, 276, 72, 420, -556, -224, 504, -66, 384, -282, -562, 276, -112, 282, -366, -360, 570, 40, 572, -432, -384, 252, -22, 301, -576, -273, 384, 90, 492, -192, -624, 360, -84, 292, -586, -258, 640, -60, 392, -396, -592, 240, 96, 450, -400, -264, 600, 10, 602, -252, -462, 456, 133, 204, -606, -420, 360, -62, 552, -336, -612, 306, -84, 360, -616, -204, 620, 96, 440, -312, -540, 264, 1, 312, -480, -468, 576, 42, 632, -400, -424, 316, -126, 312, -516, -360, 504, -85, 642, -212, -642, 396, 84, 320, -646, -305, 720, 12, 384, -486, -652, 220, 132, 462, -504, -276, 660, -72, 662, -332, -384, 410, -120, 252, -660, -498, 444, 66, 744, -252, -672, 336, -20, 471, -676, -224, 576, 80, 452, -384, -682, 420, -136, 300, -460, -462, 624, -44, 692, -516, -504, 346, 140, 300, -672, -350, 464, -18, 702, -240, -720, 516, 92, 352, -612, -360, 710, -72, 560, -450, -704, 192, -144, 540, -480, -360, 720, 77, 612, -381, -484, 546, 30, 266, -726, -360, 547, 72, 672, -372, -732, 366, -86, 462, -792, -294, 740, -108, 480, -312, -742, 320, 150, 372, -574, -576, 636, 2, 752, -506, -504, 360, 152, 360, -756, -380, 528, -100, 762, -252, -660, 576, -112, 382, -720, -342, 770, 72, 512, -576, -772, 294, 32, 480, -432, -390, 840, 72, 864, -352, -600, 473, -156, 264, -786, -588, 524, -80, 672, -420, -744, 396, 104, 600, -796, -240, 736, -21, 630, -402, -864, 396, 132, 384, -540, -510, 810, -61, 812, -540, -544, 432, -162, 352, -840, -410, 504, 126, 822, -272, -822, 510, -24, 360, -826, -462, 830, 82, 552, -516, -688, 280, -166, 720, -640, -420, 840, -60, 871, -422, -564, 636, 157, 322, -798, -572, 564, 16, 792, -432, -852, 372, 140, 530, -856, -288, 860, -126, 504, -432, -862, 420, -172, 432, -546, -576, 960, 60, 792, -550, -672, 440, -6, 432, -876, -440, 584, 132, 882, -301, -882, 576, -120, 442, -886, -360, 756, -90, 732, -666, -920, 300, 180, 510, -528, -450, 960, 21, 832, -504, -504, 560, 182, 304, -906, -678, 714, -72, 912, -440, -984, 456, -124, 690, -792, -320, 920, 110, 612, -462, -864, 432, -36, 462, -714, -630, 930, 64, 860, -696, -624, 466, -192, 420, -936, -396, 624, -138, 942, -312, -924, 660, 120, 504, -946, -480, 864, -20, 632, -480, -952, 364, 192, 720, -720, -480, 816, -86, 993, -432, -742, 726, -192, 264, -966, -665, 640, 96, 972, -546, -840, 486, 24, 682, -976, -324, 1080, 129, 770, -492, -982, 420, -196, 480, -552, -720, 924, -84, 992, -672, -664, 432, 200, 492, -996, -500, 720, -5]
true