2017年7月30日日曜日

170730

Ruby


5乗したとき、下桁の数が自分自身と同じになる数

「平方したとき、下桁の数が自分自身と同じになる数」をAutomorphic number と言いますが、
「5乗したとき、下桁の数が自分自身と同じになる数」を探してみた。
ちなみに、Automorphic number は「5乗したとき、下桁の数が自分自身と同じになる数」になる。

def A(n)
  (n..n * 10 - 1).select{|i| (i ** 5 - i) % (n * 10) == 0}
end

(0..7).each{|i| p [i, A(10 ** i)]}

出力結果
[0, [1, 2, 3, 4, 5, 6, 7, 8, 9]]
[1, [24, 25, 32, 43, 49, 51, 57, 68, 75, 76, 93, 99]]
[2, [125, 193, 249, 251, 307, 375, 376, 432, 443, 499, 501, 557, 568, 624, 625, 693, 749, 751, 807, 875, 943, 999]]
[3, [1249, 1251, 1693, 1875, 2057, 2499, 2501, 2943, 3125, 3307, 3568, 3749, 3751, 4193, 4375, 4557, 4999, 5001, 5443, 5625, 5807, 6249, 6251, 6432, 6693, 6875, 7057, 7499, 7501, 7943, 8125, 8307, 8749, 8751, 9193, 9375, 9376, 9557, 9999]]
[4, [13568, 15625, 18751, 20807, 22943, 24999, 25001, 27057, 29193, 31249, 34375, 40625, 43751, 45807, 47943, 49999, 50001, 52057, 54193, 56249, 59375, 65625, 68751, 70807, 72943, 74999, 75001, 77057, 79193, 81249, 84375, 86432, 90624, 90625, 93751, 95807, 97943, 99999]]
[5, [109375, 109376, 140625, 172943, 186432, 204193, 218751, 249999, 250001, 281249, 295807, 327057, 359375, 390625, 422943, 454193, 468751, 499999, 500001, 531249, 545807, 577057, 609375, 640625, 672943, 704193, 718751, 749999, 750001, 781249, 795807, 813568, 827057, 859375, 890624, 890625, 922943, 954193, 968751, 999999]]
[6, [1204193, 1295807, 1718751, 2077057, 2109375, 2499999, 2500001, 2890624, 2890625, 2922943, 3281249, 3704193, 3795807, 4218751, 4577057, 4609375, 4999999, 5000001, 5390625, 5422943, 5781249, 6204193, 6295807, 6718751, 7077057, 7109375, 7109376, 7499999, 7500001, 7890625, 7922943, 8281249, 8704193, 8795807, 9186432, 9218751, 9577057, 9609375, 9999999]]
[7, [12109375, 12890624, 12890625, 16295807, 17077057, 20813568, 24218751, 24999999, 25000001, 25781249, 32922943, 33704193, 37109375, 37890625, 41295807, 42077057, 49218751, 49999999, 50000001, 50781249, 57922943, 58704193, 62109375, 62890625, 66295807, 67077057, 74218751, 74999999, 75000001, 75781249, 79186432, 82922943, 83704193, 87109375, 87109376, 87890625, 91295807, 92077057, 99218751, 99999999]]

2017年7月28日金曜日

170728

Ruby


nil.to_i

http://easyramble.com/ruby-nil-to-i.html
上記の記事では、nil.to_i がfalse ではなく、0 に変換されtrue になることが使いにくいと書いてあるが、
たまたまnil.to_i が0 になることも上手く利用できる場合があったので記しておきます。

三百二十一を通常とは逆に"123"と書くことにします。
では、例えば万の位は?と聞かれると、
万の位はないからないと答える場合や
"12300"だから0と答える場合もあると思うのですが、
このことはRuby では以下のようになります。

irb(main):001:0> nil.to_i
=> 0
irb(main):002:0> str = "123"
=> "123"
irb(main):003:0> str[4]
=> nil
irb(main):004:0> str[4].to_i
=> 0

2017年7月25日火曜日

170725

Number of knight's tours on a m×n chessboard(5)

3 X k(https://oeis.org/A118067) の計算を日曜日に行い、月曜日の朝承認されました。
1861番目まで求めています。

2017年7月17日月曜日

170717

Ruby


q * Delta' / Delta

E_2 = q * Delta' / Delta が成り立つことを確認しておく。

# 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 s(k, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == 0}
  s
end

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

def I(ary, n)
  a = [1]
  (0..n - 1).each{|i| a << -(0..i).inject(0){|s, j| s + ary[1 + i - j] * a[j]}}
  a
end

def E_2(n)
  a0 = A([[1, 24]], n)
  a = [0] + a0
  puts "Delta'"
  p b = (1..n + 1).map{|i| i * a[i]}
  puts "q / Delta"
  p I(a0, n)
  puts "E_2"
  mul(I(a0, n), b, n)
end

n = 10
p ary = E_2(n)

出力結果
Delta'
[1, -48, 756, -5888, 24150, -36288, -117208, 675840, -1022787, -1159200, 5880732]
q / Delta
[1, 24, 324, 3200, 25650, 176256, 1073720, 5930496, 30178575, 143184000, 639249300]
E_2
[1, -24, -72, -96, -168, -144, -288, -192, -360, -312, -432]

2017年7月15日土曜日

170715(2)

Ruby


Values of Zagier's function J_1(2)

以下、コードです。

# 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 A001158(n)
  s = 0
  (1..n).each{|i| s += i * i * i if n % i == 0}
  s
end

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

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

def A027652(n)
  a = [-1] + Array.new(n, 0)
  (1..n / 4).each{|i| a[i * 4] -= 240 * A001158(i)}
  mul(A([[1, 2], [2, -1], [4, -6]], n), a, n)
end

n = 10000
ary = A027652(n + 1)
-1.upto(n){|i|
  j = ary[i + 1]
  break if j.to_s.size > 1000
  print i
  print ' '
  puts j
}

170715

Values of Zagier's function J_1(1)

170713 のコメントにおいて
「A027652 での出力プログラム(-1から10000までの数表提示)を教えてください。」
とあったので、
Values of Zagier's function J_1(1) 計算式
Values of Zagier's function J_1(2) コード
を書くことにします。

計算式

こちらの論文(https://projecteuclid.org/download/pdf_1/euclid.em/1064858788) の
6. A FORMULA OF KANEKO AND ZAGIER をご覧ください。
そこには、以下の定義式が書かれています。
Zagier defined the sequence of numbers t(n) using certain singular values of j(z). We call the numbers t(n) Zagier coefficients. Zagier gave an equivalent definition of the t(n) by means of the Fourier expansion of a meromorphic modular form of weight 3/2, namely,
g(z) = E_4(4*z)*theta_1(z)/eta(4*z)^6 = Sum t(d)*q^d,
(以下省略)

2017年7月13日木曜日

170713

Ruby


j-invariant

次の求め方は多項式同士のかけ算をするより速いと思う。

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

n = 50
p A000521(n)

出力結果
[1, 744, 196884, 21493760, 864299970, 20245856256, 333202640600, 4252023300096, 44656994071935, 401490886656000, 3176440229784420, 22567393309593600, 146211911499519294, 874313719685775360, 4872010111798142520, 25497827389410525184, 126142916465781843075, 593121772421445058560, 2662842413150775245160, 11459912788444786513920, 47438786801234168813250, 189449976248893390028800, 731811377318137519245696, 2740630712513624654929920, 9971041659937182693533820, 35307453186561427099877376, 121883284330422510433351500, 410789960190307909157638144, 1353563541518646878675077500, 4365689224858876634610401280, 13798375834642999925542288376, 42780782244213262567058227200, 130233693825770295128044873221, 389608006170995911894300098560, 1146329398900810637779611090240, 3319627709139267167263679606784, 9468166135702260431646263438600, 26614365825753796268872151875584, 73773169969725069760801792854360, 201768789947228738648580043776000, 544763881751616630123165410477688, 1452689254439362169794355429376000, 3827767751739363485065598331130120, 9970416600217443268739409968824320, 25683334706395406994774011866319670, 65452367731499268312170283695144960, 165078821568186174782496283155142200, 412189630805216773489544457234333696, 1019253515891576791938652011091437835, 2496774105950716692603315123199672320, 6060574415413720999542378222812650932, 14581598453215019997540391326153984000]

2017年7月10日月曜日

170710

Ruby


Borcherds Products(2)

E_{2k} = (1 - q)^c(1) * (1 - q^2)^c(2) * (1 - q^3)^c(3) * ...
となるc(n) を出力してみた。

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 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 E0_2k(k, n)
  a = -4 * k / bernoulli(2 * k)[-1]
  [1] + (1..n).map{|i| a * sigma(2 * k - 1, i)}
end

# ary[0]を計算の都合上上手く利用
def qdEE(k, n)
  ary = [1]
  a = E0_2k(k, n)
  (1..n).each{|i|
    ary << (1..i).inject(0){|s, j| s - a[j] * ary[-j]}
    ary[0] += 1
  }
  # qE'/Eを出力
  p ary[1..-1]
  ary
end

def A008683(n)
  ary = n.prime_division
  return (-1) ** (ary.size % 2) if ary.all?{|i| i[1] == 1}
  0
end

def A(k, n)
  a = qdEE(k, n)
  m_ary = [0] + (1..n).map{|i| A008683(i)}
  ary = []
  (1..n).each{|i|
    s = 0
    (1..i).each{|j|
      s += m_ary[i / j] * a[j] if i % j == 0
    }
    ary << s / i
  }
  ary
end

n = 20
(1..7).each{|k| p [2 * k, A(k, n)]}

出力結果
[(24/1), (720/1), (19296/1), (517920/1), (13893264/1), (372707136/1), (9998360256/1), (268219317312/1), (7195339794744/1), (193024557070560/1), (5178140391612960/1), (138910500937231488/1), (3726458885094926160/1), (99967214347459657344/1), (2681753442755678231616/1), (71941601800917818208384/1), (1929929122926214154035632/1), (51772914784769611993777296/1), (1388877277133816982094600416/1), (37258479630861088042349726400/1)]
[2, [(24/1), (348/1), (6424/1), (129300/1), (2778648/1), (62114524/1), (1428337176/1), (33527349924/1), (799482197272/1), (19302454317660/1), (470740035601176/1), (11575875047000596/1), (286650683468840472/1), (7140515309818664028/1), (178783562850377621272/1), (4496350112540599930692/1), (113525242525071420825624/1), (2876273043597912015627484/1), (73098804059674578004978968/1), (1862923981543044750889606932/1)]]
[(-240/1), (53280/1), (-12288960/1), (2835808320/1), (-654403831200/1), (151013228757120/1), (-34848505552897920/1), (8041801037378486400/1), (-1855762905734676483120/1), (428244362959801779806400/1), (-98823634118413525094402880/1), (22804995243537595828606337280/1), (-5262585338995033221326389251360/1), (1214418339247561600451288629674240/1), (-280244748103684391377173184168924800/1), (64670563924749466394147714714046562560/1), (-14923676060461817600380995991658397700320/1), (3443855962300764146093216928957388554932640/1), (-794720003370771809323025500213738023874564800/1), (183393234406846382045882997606216500974092681600/1)]
[4, [(-240/1), (26760/1), (-4096240/1), (708938760/1), (-130880766192/1), (25168873498760/1), (-4978357936128240/1), (1005225129317834760/1), (-206195878414962688240/1), (42824436296045618358408/1), (-8983966738037593190400240/1), (1900416270294787067711818760/1), (-404814256845771786255876096240/1), (86744167089111545378556727322760/1), (-18682983206912292758478168650186992/1), (4041910245296841649131619604791754760/1), (-877863297674224564728293881862258688240/1), (191325331238931341449726260650672777242760/1), (-41827368598461674174896078958617790730240240/1), (9169661720342319102294128468092677058473856008/1)]]
[(504/1), (287280/1), (153540576/1), (82226602080/1), (44031499226064/1), (23578504122108096/1), (12626092121367162816/1), (6761166974864088760512/1), (3620548496603402008959384/1), (1938773508354916749345180960/1), (1038197035676506069321210300320/1), (555945849395316042744806163186048/1), (297704363274819300973648925452721040/1), (159418202346978959358843609900591944064/1), (85367117095565698138593773880519864618816/1), (45713378860880921566308709979981162458644864/1), (24479132925843908660058308463908687996314100592/1), (13108371416270932659697141110857950973979134065776/1), (7019423510932426730578291404265424048253131675416416/1), (3758842716698661712241372736333114614609259840168936000/1)]
[6, [(504/1), (143388/1), (51180024/1), (20556578700/1), (8806299845112/1), (3929750661380124/1), (1803727445909594616/1), (845145871847732769804/1), (402283166289266872824312/1), (193877350835487271784566812/1), (94381548697864188120110027256/1), (46328820782943001597184984563596/1), (22900335636524561613357609650209272/1), (11387014453355639953301251269944606748/1), (5691141139704379875906251589099214123512/1), (2857086178805057597893871800812893648117772/1), (1439948995637876980003429909641687529194947064/1), (728242856459496258872063193906079488448508696604/1), (369443342680654038451489021277127581487006930285048/1), (187942135834933085612068636719717055312717150429872012/1)]]
[(-480/1), (106560/1), (-24577920/1), (5671616640/1), (-1308807662400/1), (302026457514240/1), (-69697011105795840/1), (16083602074756972800/1), (-3711525811469352966240/1), (856488725919603559612800/1), (-197647268236827050188805760/1), (45609990487075191657212674560/1), (-10525170677990066442652778502720/1), (2428836678495123200902577259348480/1), (-560489496207368782754346368337849600/1), (129341127849498932788295429428093125120/1), (-29847352120923635200761991983316795400640/1), (6887711924601528292186433857914777109865280/1), (-1589440006741543618646051000427476047749129600/1), (366786468813692764091765995212433001948185363200/1)]
[8, [(-480/1), (53520/1), (-8192480/1), (1417877520/1), (-261761532384/1), (50337746997520/1), (-9956715872256480/1), (2010450258635669520/1), (-412391756829925376480/1), (85648872592091236716816/1), (-17967933476075186380800480/1), (3800832540589574135423637520/1), (-809628513691543572511752192480/1), (173488334178223090757113454645520/1), (-37365966413824585516956337300373984/1), (8083820490593683298263239209583509520/1), (-1755726595348449129456587763724517376480/1), (382650662477862682899452521301345554485520/1), (-83654737196923348349792157917235581460480480/1), (18339323440684638204588256936185354116947712016/1)]]
[(264/1), (340560/1), (141251616/1), (85062410400/1), (43377095394864/1), (23729517350865216/1), (12591243615814264896/1), (6769208775901467246912/1), (3618692733697667332476264/1), (1939201752717876551124987360/1), (1038098212042387655796115897440/1), (555968654390559580340634769523328/1), (297699100689480305940427599063469680/1), (159419416765318206920444061189221618304/1), (85366836850817594454202396707335695694016/1), (45713443531444846315775104127695876505207424/1), (24479118002167848198240708082912696337916400272/1), (13108374860126894960461287204074879931367688998416/1), (7019422716212423359806482081239923834515107800851616/1), (3758842900091896119087754782216112220825760814261617600/1)]
[10, [(264/1), (170148/1), (47083784/1), (21265517460/1), (8675419078920/1), (3954919534878884/1), (1798749087973466376/1), (846151096977050604564/1), (402076970410851910136072/1), (193920175271783317402925220/1), (94372564731126150526919627016/1), (46330721199213296384252696382356/1), (22899930822267715841571353774113032/1), (11387101197522729064846629826671929508/1), (5691122456721172963613493110930563936520/1), (2857090220715302894735520932432498439872532/1), (1439948117774579305778865181347805666936258824/1), (728243047784827497803404643632340139121285939364/1), (369443300853285439989814846381048622869216200044808/1), (187942145004594805954387739013845523405394208903728020/1)]]
[(-65520/691), (-181241292960/477481), (1327039595219520/329939371), (16726529010193003834560/227988105361), (-212292443034667545563613600/157539780804451), (-1528649681810919339412397043354240/108859988535875641), (27164473060529939410885608434561293440/75222252078290067931), (139687438912977894679060436101569158428963200/51978576186098436940321), (-3193463223842507280175746274546318586709753414960/35917196144594019925761811), (-12760941836599382345853182009220325316746406140948900800/24818782535914467768701411401), (356849194725533394910591056782950070710601622635665212077760/17149778732316897228172675278091), (1165426878836468344118964839868617205169221239767199309395926455040/11850497104030975984667318617160881), (-38553804480607725215290179618637159035117781145082483289178548106683680/8188693498885404405405117164458168771), (-106405445205627846270822176358961029423817153288294230849493191583102409422080/5658387207729814444134935960640594620761), (4066363140385766008775333102335496734262730722528940739119216398979996237413385600/3909945560541301780897240748802650882945851), (9712225199724388534253473966937692734606569491858692083463225359804746118353448754266880/2701772382334039530599993357422631760115583041), (-421224830028650234025369176318489698028570749040417990650073546093929870607562964294077953760/1866924716192821315644595409979038546239867881331), (-886235566849575408386559844275844948183839658161234093955586295948651511166146475578854785676187680/1290044978889239529110415428295515635451748705999721), (43025693225775251885845031687057113510329466300208931977445869733993002384639653998921260403709882401600/891421080412464514615297060952201304097158355845807211), (80845257078377442797673535848916443999448180879548242369896298541209370209618292421140794551029954179792284800/615971966565012979599170269117971101131136423889452782801)]
[12, [(-65520/691), (-90598009320/477481), (442356959924880/329939371), (4181653887366701917080/227988105361), (-42458488603945952980072176/157539780804451), (-254774947034575235293755006524520/108859988535875641), (3880639008647135220484579615019041680/75222252078290067931), (17460929863645555627595091312548802016985880/51978576186098436940321), (-354829247093611936070806821866257430345618791920/35917196144594019925761811), (-1276094183659934890133882157523523545125344766994118376/24818782535914467768701411401), (32440835884139399537326459855370609314883413712816517006480/17149778732316897228172675278091), (97118906569705709210573520959547444017684136845556422972756182680/11850497104030975984667318617160881), (-2965677267739055785791552278356644814657501925810459068189442440443120/8188693498885404405405117164458168771), (-7600388943259131876633253514220856068432291088409001371962609628048977090920/5658387207729814444134935960640594620761), (271090876025717733918355540506954732367235799025182315752511378202861327020545424/3909945560541301780897240748802650882945851), (607014074982774283390388325796994596354985762176484835702005044352963314819300778067480/2701772382334039530599993357422631760115583041), (-24777931178155896119139363312852335178151210118840676477870794187197946604513531854181006320/1866924716192821315644595409979038546239867881331), (-49235309269420856021475540531976768979239719853660121129359006492384209098786948996506185350022120/1290044978889239529110415428295515635451748705999721), (2264510169777644836097106930897742816333129805278602932866457510944227200184293483334529419943525480080/891421080412464514615297060952201304097158355845807211), (4042262853918872139883676808281374219773059002646605610083148804543384350122733461548089761592996924639267224/615971966565012979599170269117971101131136423889452782801)]]
[(24/1), (393840/1), (128962656/1), (87898218720/1), (42722691563664/1), (23880530579622336/1), (12556395110261366976/1), (6777250576938845733312/1), (3616836970791932655993144/1), (1939629997080836352904793760/1), (1037999388408269242271021494560/1), (555991459385803117936463375860608/1), (297693838104141310907206272674218320/1), (159420631183657454482044512477851292544/1), (85366556606069490769811019534151526769216/1), (45713508202008771065241498275410590551769984/1), (24479103078491787736423107701916704679518699952/1), (13108378303982857261225433297291808888756243931056/1), (7019421921492419989034672758214423620777083926286816/1), (3758843083485130525934136828099109827042261788354299200/1)]
[14, [(24/1), (196908/1), (42987544/1), (21974456220/1), (8544538312728/1), (3980088408377644/1), (1793770730037338136/1), (847156322106368439324/1), (401870774532436947447832/1), (193962999708079363021283628/1), (94363580764388112933729226776/1), (46332621615483591171320408201116/1), (22899526008010870069785097898016792/1), (11387187941689818176392008383399252268/1), (5691103773737966051320734632761913749528/1), (2857094262625548191577170064052103231627292/1), (1439947239911281631554300453053923804677570584/1), (728243239110158736734746093358600789794063182124/1), (369443259025916841528140671484969664251425469804568/1), (187942154174256526296706841307973991498071267377584028/1)]]

2017年7月7日金曜日

170707

Ruby


E_{2k}^(1/2^m)

E_2, E_4, ... , E_14 の1/2 乗および1/4 乗を出力してみた。

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 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 E0_2k(k, n)
  a = -4 * k / bernoulli(2 * k)[-1]
  [1] + (1..n).map{|i| a * sigma(2 * k - 1, i)}
end

# ary[0] = 1
def sqrt_a(ary)
  n = ary.size - 1
  a = [1]
  (0..n - 1).each{|i| a << (ary[i + 1] - (1..i).inject(0){|s, j| s + a[j] * a[-j]}) / 2}
  a
end

def A(k, m, n)
  ary = E0_2k(k, n)
  m.times{ary = sqrt_a(ary)}
  ary
end

n = 20
(1..2).each{|m|
  (1..7).each{|k|
    p [2 * k, 1r / 2 ** m, A(k, m, n)]
  }
}

出力結果
[2, (1/2), [1, (-12/1), (-108/1), (-1344/1), (-22044/1), (-409752/1), (-8201088/1), (-172293504/1), (-3746915388/1), (-83625518604/1), (-1904468689368/1), (-44079484775616/1), (-1033852665619200/1), (-24518163456010392/1), (-586936016770722048/1), (-14164129272396668544/1), (-344209494372831399036/1), (-8416148552975554157592/1), (-206895604131528824816748/1), (-5110667122256084359086144/1), (-126786831707724936343848504/1)]]
[4, (1/2), [1, (120/1), (-6120/1), (737760/1), (-107249640/1), (17385063120/1), (-3014720249760/1), (547287510713280/1), (-102701836021530600/1), (19762301660609250840/1), (-3878226140959368843120/1), (773209219953012480001440/1), (-156173318001506652330786720/1), (31888935085481430265623676560/1), (-6571782084195189618502934249280/1), (1365127419834226042864569074813760/1), (-285534062034357884979632025794248680/1), (60085363890879747539684614555629652080/1), (-12711622785937472925878191450744191792840/1), (2702093647825127283904821241621575936002400/1), (-576835698751150275890157587333387705032310640/1)]]
[6, (1/2), [1, (-252/1), (-40068/1), (-10158624/1), (-3362961924/1), (-1254502939032/1), (-502480721822688/1), (-211053631376919744/1), (-91717692784641665028/1), (-40892713821496126310364/1), (-18600635229558474625901928/1), (-8597703758971125751979122656/1), (-4026779251040181298981708746720/1), (-1906829160682680163830076095252312/1), (-911418227119797855067380431358105408/1), (-439140214807361652244949220083845379904/1), (-213063634013721178057946454290474472415236/1), (-104006958607978929552534844705778411158855032/1), (-51045105077275857796643678469898154574883627428/1), (-25172542591397172724757616806583589908747757117344/1), (-12467066632341213302483024369213270034025698921210984/1)]]
[8, (1/2), [1, (240/1), (2160/1), (6720/1), (17520/1), (30240/1), (60480/1), (82560/1), (140400/1), (181680/1), (272160/1), (319680/1), (490560/1), (527520/1), (743040/1), (846720/1), (1123440/1), (1179360/1), (1635120/1), (1646400/1), (2207520/1)]]
[10, (1/2), [1, (-132/1), (-76428/1), (-12686784/1), (-4629945804/1), (-1581036186312/1), (-643032851554368/1), (-264454897726360704/1), (-114830224962140965068/1), (-50847479367845783084484/1), (-23070238839261012248537688/1), (-10629338992044523324726971456/1), (-4967892053918960602454346039360/1), (-2347853010266523816201171448876872/1), (-1120468242949142429982811561469659008/1), (-539122252309080980108333812009708040064/1), (-261267205439828646955537710178782089567436/1), (-127406173804440558114690381384936674502183432/1), (-62472612638070920430220006411182194584648704588/1), (-30783195051390210413464424111830566268580850427584/1), (-15234894318432517657267482026195630834307458704923864/1)]]
[12, (1/2), [1, (32760/691), (45846932040/477481), (1269052691568480/329939371), (-1047187156725247257720/227988105361), (-23511629333007249712190640/157539780804451), (47977185339109004049308393039520/108859988535875641), (835146211936838220757179389047631040/75222252078290067931), (-2745429098554252777038039874974890337579000/51978576186098436940321), (-33855286759743680905173875788147434848296610280/35917196144594019925761811), (175883449894305961873827131531201742285863480207937840/24818782535914467768701411401), (1276889585024268242390619968919225388757420238799574591520/17149778732316897228172675278091), (-12068830934347580312224002700911953253614082909300889126098660960/11850497104030975984667318617160881), (-26442231511345777455626198534295519357065796367447949886556038977520/8188693498885404405405117164458168771), (867320801944536206077078852157264095630802182024680141691041691169229898560/5658387207729814444134935960640594620761), (-2495586966198881997216511499944039981305543711901925292260773006593876356253120/3909945560541301780897240748802650882945851), (-64435798072824891797948874500026179282728169893552716701257068769941719493474211733240/2701772382334039530599993357422631760115583041), (512110853488979917948249243736791690453220661480437514320628734503250657384523565428509040/1866924716192821315644595409979038546239867881331), (4908464039731808157125101429004403188697364209120190467279552218647471431275792054748219508797480/1290044978889239529110415428295515635451748705999721), (-63920735137998846541146983625576224317971955895678193117230861999777975523240480569539461695599284000/891421080412464514615297060952201304097158355845807211), (-381276796992035323294014316708105961482113979445246879338900423536853478370364877244822485726019376795997520/615971966565012979599170269117971101131136423889452782801)]]
[14, (1/2), [1, (-12/1), (-98388/1), (-20312544/1), (-5889254484/1), (-2083830070392/1), (-810894400450848/1), (-334381509272710464/1), (-143464412162723380308/1), (-63364234685240118242604/1), (-28614423885137875351570248/1), (-13150804531745894256074689056/1), (-6130681937632711718212416909600/1), (-2891952936547139307759187121205432/1), (-1377813172560437641208522365520803008/1), (-662026551456488576417497526611502879424/1), (-320438833640321920906426195678762435402836/1), (-156096931895680388758733708234370090499963032/1), (-76469959640858049116571815436296143313922538548/1), (-37649462349570694592222143099679267479968387606624/1), (-18619436954215044812960476189445579428272591543267144/1)]]
[2, (1/4), [1, (-6/1), (-72/1), (-1104/1), (-20238/1), (-405792/1), (-8601840/1), (-189317568/1), (-4281478272/1), (-98841343686/1), (-2318973049008/1), (-55118876238000/1), (-1324194430710912/1), (-32099173821105312/1), (-784045854628721568/1), (-19276683937074656064/1), (-476644852188898489662/1), (-11844755000460934254144/1), (-295648246997496992993400/1), (-7408548294571066446309360/1), (-186304177563041461260852864/1)]]
[4, (1/4), [1, (60/1), (-4860/1), (660480/1), (-105063420/1), (18206269560/1), (-3328461434880/1), (631226199152640/1), (-122944850563477500/1), (24436796345920143420/1), (-4935178772322020730360/1), (1009598430837232126725120/1), (-208736157503462405753487360/1), (43541664791244563211024015480/1), (-9151518339192632609214768291840/1), (1935999362444068965989927720724480/1), (-411882742852621041519957574448594940/1), (88063943071981650860752742653925867640/1), (-18911696622623623022546776465142542177020/1), (4077208792695042557322653333144881971840000/1), (-882104328635064717630231824646850115189884920/1)]]
[6, (1/4), [1, (-126/1), (-27972/1), (-8603784/1), (-3156774138/1), (-1265670056952/1), (-536028623834760/1), (-235629947944839168/1), (-106414175763732002292/1), (-49052892961209924090486/1), (-22977990271885179647877768/1), (-10904016663130642099838196120/1), (-5229895194960664651211116759032/1), (-2530924730585416328796558774471672/1), (-1234134945745842897078256903483903248/1), (-605735219195135308711061028699689539584/1), (-298998871837655883369571945334634385993722/1), (-148327163562049158377994605926990241325521904/1), (-73907150957380004062822227614360676547262298060/1), (-36970725242422699591281439434742757281689118022040/1), (-18559179121509411064302823188449407732664477315847144/1)]]
[8, (1/4), [1, (120/1), (-6120/1), (737760/1), (-107249640/1), (17385063120/1), (-3014720249760/1), (547287510713280/1), (-102701836021530600/1), (19762301660609250840/1), (-3878226140959368843120/1), (773209219953012480001440/1), (-156173318001506652330786720/1), (31888935085481430265623676560/1), (-6571782084195189618502934249280/1), (1365127419834226042864569074813760/1), (-285534062034357884979632025794248680/1), (60085363890879747539684614555629652080/1), (-12711622785937472925878191450744191792840/1), (2702093647825127283904821241621575936002400/1), (-576835698751150275890157587333387705032310640/1)]]
[10, (1/4), [1, (-66/1), (-40392/1), (-9009264/1), (-3725341158/1), (-1400292801072/1), (-604993149612720/1), (-262280205541007808/1), (-118717180239835505592/1), (-54520207050101542651506/1), (-25525844887805197307977968/1), (-12095360676632550886664063760/1), (-5797006133905562955666277287792/1), (-2803076705590018145443840156918512/1), (-1366015421209459578528437438006252448/1), (-670091296919050986225989658489012757824/1), (-330611670137136442162609620453130082815782/1), (-163941520773935794740302240363598894478691424/1), (-81657649771473397928434008796580782410933017400/1), (-40834520010932330651037547656178672233457870827600/1), (-20492850667625284419689234433465422535429659043139344/1)]]
[12, (1/4), [1, (16380/691), (22789313820/477481), (261237385412640/329939371), (-787549058928904168260/227988105361), (-4809181838933117734681320/157539780804451), (41980947234884080545199964009760/108859988535875641), (45260401444681454603139799306595520/75222252078290067931), (-2639033317669749279068083384309427482119300/51978576186098436940321), (10513809347159755999846619089710384094533472860/35917196144594019925761811), (180949934871719013702197255039137858643124345765621720/24818782535914467768701411401), (-1638164681830088724110432939859211290149283136689069572640/17149778732316897228172675278091), (-13093404286931403267642267493587300250452605573089175827219968480/11850497104030975984667318617160881), (184999082639412441206554378645194079143007004486556598218733173230040/8188693498885404405405117164458168771), (982793373074668753061035461179929885273684266979467052324258607890791372480/5658387207729814444134935960640594620761), (-18883314263737362292271581810519934169862545794159028787667870943318316108628160/3909945560541301780897240748802650882945851), (-75752856033948008512130201441199560973448503136818591154834118926514745856486041334020/2701772382334039530599993357422631760115583041), (1841538034983574797196241711741210588827368267821575041942807853628544593017596258010732920/1866924716192821315644595409979038546239867881331), (5957469249081894236607025663301065945221332732132192290213672136437703129539056005533588683449340/1290044978889239529110415428295515635451748705999721), (-175266196632754364971353842533279391145069486985308508688919671392127462960128375953850227387129352800/891421080412464514615297060952201304097158355845807211), (-475940272979041900483992425321050569816432134634851300882719883981889776380787033572861547177114063021117160/615971966565012979599170269117971101131136423889452782801)]]
[14, (1/4), [1, (-6/1), (-49212/1), (-10451544/1), (-4218246978/1), (-1581565900392/1), (-677142351901080/1), (-293172823731286848/1), (-132241381826055031692/1), (-60651805300034501958126/1), (-28350123351848675673466968/1), (-13420046900399367136336144200/1), (-6425692364941074466359795250152/1), (-3104773022051749920355884067334952/1), (-1512050649547841067602883114609259248/1), (-741322222128790045704590782231298729664/1), (-365580326288772369326690154343819802568642/1), (-181205962723470844962060829815426371793633744/1), (-90223604375071547255060847021997348262119448340/1), (-45103330863911195409976397618541206060852989284360/1), (-22628528490799136130775605432077457411997743506682744/1)]]

2017年7月2日日曜日

170702(2)

Number of knight's tours on a m×n chessboard(4)

昨日(日本時間では今日)3 X k(https://oeis.org/A118067) は更新された。
どうやらA169696 の数値を使っているようだ。

170702

Ruby


Beukers' supercongruence for Apery number

アペリー数A(n) は次のように定義される。
A(n) = Sum_{k=1..n} (binomial(n,k)*binomial(n+k,k))^2.
また、
Product_{n>=1} ((1 - q^n)*(1 -q^(2*n)))^4 = A030211(0) + A030211(1) * q + ...
と展開すると、
m = 2*n + 1 が素数の時、
A(n) = a(n) mod m,
A(n) = a(n) mod m^2
が成り立つ。
例えば、
A(3) = 1445 = 3 mod 7,
A030211(3) = 24 = 3 mod 7,
A(3) = 1445 = 24 mod 7^2,
A030211(3) = 24 = 3 mod 7^2.

二つの合同式について、以下のとおり確認してみた。

require 'prime'

def A005259(n)
  i = 0
  a, b = 1, 5
  ary = [1]
  while i < n
    i += 1
    a, b = b, ((((34 * i + 51) * i + 27) * i + 5) * b - i ** 3 * a) / (i + 1) ** 3
    ary << a
  end
  ary
end

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

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

n = 300
a = Prime.take(n + 1).to_a
a.shift

ary0 = A005259(a[-1])
p ary01 = a.map{|i| ary0[(i - 1) / 2] % i}
p ary02 = a.map{|i| ary0[(i - 1) / 2] % (i * i)}

ary1 = A([[1, 4], [2, 4]], a[-1])
p ary01 == a.map{|i| ary1[(i - 1) / 2] % i}
p ary02 == a.map{|i| ary1[(i - 1) / 2] % (i * i)}

出力結果
[2, 3, 3, 0, 9, 16, 6, 13, 24, 26, 23, 7, 9, 11, 23, 40, 1, 54, 18, 8, 55, 70, 2, 7, 51, 62, 76, 77, 75, 11, 59, 119, 11, 4, 144, 2, 102, 70, 115, 41, 116, 186, 180, 101, 88, 111, 36, 156, 198, 30, 182, 239, 119, 256, 227, 165, 223, 65, 247, 97, 233, 89, 298, 276, 222, 192, 28, 162, 109, 66, 53, 147, 9, 59, 27, 272, 350, 99, 88, 35, 410, 225, 397, 276, 121, 3, 191, 440, 344, 398, 127, 408, 485, 442, 392, 280, 29, 319, 198, 48, 245, 389, 190, 438, 154, 549, 394, 233, 68, 602, 535, 538, 473, 261, 505, 82, 283, 421, 119, 478, 258, 125, 603, 674, 209, 532, 87, 409, 343, 88, 366, 424, 623, 303, 12, 335, 81, 598, 284, 95, 271, 791, 772, 464, 765, 708, 22, 271, 330, 153, 154, 217, 88, 889, 452, 190, 730, 173, 377, 884, 464, 226, 824, 207, 757, 60, 399, 1008, 18, 978, 472, 684, 752, 808, 997, 584, 677, 25, 998, 704, 16, 346, 442, 845, 784, 20, 403, 179, 432, 934, 62, 575, 882, 106, 109, 641, 632, 471, 258, 82, 98, 805, 1234, 409, 66, 449, 1191, 442, 1073, 204, 334, 56, 447, 815, 1142, 1307, 103, 387, 757, 1127, 283, 418, 85, 1110, 1239, 1065, 383, 1417, 512, 1054, 1334, 953, 748, 596, 1226, 1127, 742, 1067, 1384, 634, 39, 1153, 1194, 839, 209, 927, 175, 924, 1070, 635, 462, 44, 948, 102, 886, 110, 997, 232, 377, 1075, 1224, 1566, 1231, 574, 495, 1319, 1716, 713, 1632, 1626, 704, 1505, 1076, 254, 1173, 1724, 1409, 465, 1069, 307, 340, 14, 1777, 1051, 1181, 1432, 885, 258, 1869, 1740, 1278, 900, 1795, 1431, 954, 1397, 1305, 1377, 353, 382]
[5, 23, 24, 77, 22, 50, 44, 473, 198, 801, 1207, 1483, 52, 528, 2567, 2813, 550, 188, 728, 154, 5585, 236, 714, 8931, 1566, 9641, 10669, 9887, 11827, 1408, 14469, 1626, 18637, 302, 1352, 3142, 3036, 27625, 27103, 3084, 30343, 35521, 2882, 1086, 88, 41045, 928, 156, 50807, 53387, 1616, 4818, 60861, 770, 61769, 69567, 8624, 74855, 3338, 7172, 5214, 396, 92665, 2154, 93103, 108429, 110227, 2244, 115279, 113379, 1848, 7120, 6350, 135741, 10368, 8830, 9878, 147667, 906, 170149, 172599, 656, 9490, 5544, 7652, 201155, 1562, 10582, 203601, 208213, 229089, 221993, 232237, 19404, 16488, 246127, 10970, 256589, 198, 283941, 20854, 297653, 7018, 24420, 23234, 333965, 337811, 354841, 355259, 365409, 373239, 361483, 10996, 391481, 6274, 9084, 394953, 419647, 15276, 11054, 431651, 8926, 8116, 465717, 486703, 24638, 16624, 30216, 533967, 531429, 28600, 534385, 2894, 14762, 583683, 27390, 19756, 38854, 640203, 657005, 650503, 670713, 27236, 12070, 661897, 2414, 696763, 40644, 726113, 756127, 49490, 1100, 772665, 809933, 790289, 5704, 8162, 822859, 16374, 8460, 887707, 898569, 20244, 50034, 37128, 27808, 965495, 3026, 973511, 996541, 39270, 54296, 27610, 1072017, 1081467, 1092573, 5982, 9592, 1092447, 704, 1159749, 22206, 1168747, 1196497, 1201831, 29062, 39708, 53242, 55680, 1288835, 2388, 1370645, 1362575, 1378213, 6074, 1405811, 1401647, 52802, 1488649, 24662, 22256, 46574, 1501283, 1526317, 1615471, 1555713, 1574149, 41690, 1596749, 7986, 1651303, 1677017, 40964, 20600, 48698, 37136, 36850, 4488, 1804879, 1879287, 1905721, 1940611, 2009361, 26796, 85550, 13962, 2069665, 2085097, 41140, 82422, 2062901, 84800, 2096363, 95508, 2203473, 41330, 2193959, 41540, 73912, 2280565, 2305725, 2358857, 44566, 92466, 51656, 49504, 2441509, 2405741, 2402481, 11814, 2544451, 2563209, 2470763, 77526, 2599381, 110, 2565149, 2676727, 2734427, 85888, 101244, 2733719, 60486, 61666, 80348, 2886111, 2918811, 57572, 122942, 2997887, 63596, 31306, 36256, 35794, 10088, 101796, 17510, 2266, 3231893, 93280, 110200, 3274745, 3422295, 3387789, 115312, 110066, 40302, 3489561, 3549411, 3528095, 3626485, 165418, 38484, 3604543, 3791759, 3661473, 3769735, 3840637, 18236, 3836907]
true
true