2015年9月27日日曜日

150927(2)

Ruby


オイラー関数のベキ(2)

φ(x)^n の最初の方を出力してみた。
また、「ラマヌジャンの遺した関数」の3.8 において、
φ(x)^n の最初の方の,たとえば500個の,係数の中の0の数を求めることは,
単純なコンピュータ・プログラムの問題である
と書いてあったので、この個数も出力してみた。

# -*- coding: cp932 -*-

# 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

# 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 phi_k(k, n)
  ary = [1]
  # 無限積のうち必要なところだけ取り出す
  (1..n).each{|i|
    b_ary = Array.new(i + 1, 0)
    b_ary[0], b_ary[-1] = 1, -1
    ary = mul(ary, b_ary, n)
  }
  # k乗
  power(ary, k, n)
end

(1..35).each{|k| p [k, phi_k(k, 50)]}
puts "500次までに現れる0の個数"
(1..35).each{|k| p [k, phi_k(k, 500).count(0)]}

出力結果
[1, [1, -1, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
[2, [1, -2, -1, 2, 1, 2, -2, 0, -2, -2, 1, 0, 0, 2, 3, -2, 2, 0, 0, -2, -2, 0, 0, -2, -1, 0, 2, 2, -2, 2, 1, 2, 0, 2, -2, -2, 2, 0, -2, 0, -4, 0, 0, 0, 1, -2, 0, 0, 2, 0, 2]]
[3, [1, -3, 0, 5, 0, 0, -7, 0, 0, 0, 9, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0]]
[4, [1, -4, 2, 8, -5, -4, -10, 8, 9, 0, 14, -16, -10, -4, 0, -8, 14, 20, 2, 0, -11, 20, -32, -16, 0, -4, 14, 8, -9, 20, 26, 0, 2, -28, 0, -16, 16, -28, -22, 0, 14, 16, 0, 40, 0, -28, 26, 32, -17, 0, -32]]
[5, [1, -5, 5, 10, -15, -6, -5, 25, 15, -20, 9, -45, -5, 25, 20, 10, 15, 20, -50, -35, -30, 55, -50, 15, 80, 1, 50, -35, -45, -15, 5, -50, -25, -55, 85, 51, 50, 10, -40, 65, 10, -10, -115, 50, -115, -100, 85, 80, -30, 5, 20]]
[6, [1, -6, 9, 10, -30, 0, 11, 42, 0, -70, 18, -54, 49, 90, 0, -22, -60, 0, -110, 0, 81, 180, -78, 0, 130, -198, 0, -182, -30, 90, 121, 84, 0, 0, 210, 0, -252, -102, -270, 170, 0, 0, -69, 330, 0, -38, 420, 0, -190, -390, 0]]
[7, [1, -7, 14, 7, -49, 21, 35, 41, -49, -133, 98, -21, 126, 112, -176, -105, -126, 140, -35, 147, 259, 98, -420, -224, 238, -455, 273, -14, 322, 406, -35, -7, -637, -196, 245, -181, -574, 462, 147, 924, 217, -329, -140, -7, -371, -777, 588, -560, -196, -489, 1246]]
[8, [1, -8, 20, 0, -70, 64, 56, 0, -125, -160, 308, 0, 110, 0, -520, 0, 57, 560, 0, 0, 182, -512, -880, 0, 1190, -448, 884, 0, 0, 0, -1400, 0, -1330, 1000, 1820, 0, -646, 1280, 0, 0, -1331, -2464, 380, 0, 1120, 0, 2576, 0, 0, -880, 1748]]
[9, [1, -9, 27, -12, -90, 135, 54, -99, -189, -85, 657, -162, -135, -171, -810, 702, 495, 837, -673, -900, 243, -1053, -297, 1566, 2700, -1764, 81, -1188, -1377, 270, -2043, 3321, -756, 3726, 3015, -4563, -3348, 504, -351, -1350, -468, -891, 7074, 1611, 2700, -2423, -1512, -3267, -5265, -1800, 3510]]
[10, [1, -10, 35, -30, -105, 238, 0, -260, -165, 140, 1054, -770, -595, 0, -715, 2162, 455, 0, -2380, -1820, 2401, -680, 1495, 3080, 1615, -6958, -1925, 0, 0, 5100, -1442, 8330, -5355, 1330, 0, -16790, 0, 8190, 8265, 0, 1918, 0, 8415, -10230, -7140, -9362, -7315, 10010, 0, 14260, 14641]]
[11, [1, -11, 44, -55, -110, 374, -143, -462, 55, 495, 1287, -2069, -902, 1210, -275, 3795, -1507, -2431, -3575, -385, 8690, -1661, 1143, 1265, -4290, -12716, 2299, 11440, 3905, 8635, -10472, 6105, -20548, -1540, 8690, -24904, 29634, 25003, 8470, -23320, -18183, -4741, 2420, -19195, 2200, 18271, 5643, 52382, -14520, 990, -12287]]
[12, [1, -12, 54, -88, -99, 540, -418, -648, 594, 836, 1056, -4104, -209, 4104, -594, 4256, -6480, -4752, -298, 5016, 17226, -12100, -5346, -1296, -9063, -7128, 19494, 29160, -10032, -7668, -34738, 8712, -22572, 21812, 49248, -46872, 67562, 2508, -47520, -76912, -25191, 67716, 32076, 7128, 29754, 36784, -51072, 45144, -122398, -53460, 11286]]
[13, [1, -13, 65, -130, -65, 728, -871, -715, 1560, 845, 78, -6513, 2730, 8605, -4355, 2483, -13299, -2275, 11440, 10010, 19734, -41834, -11375, 12870, -2730, 14911, 33201, 25155, -70070, -36595, -28925, 64389, 13650, 52780, 72215, -173693, 87867, -62920, -111865, -25870, 89908, 284505, -37895, -88660, -59995, -57759, -172081, 117390, -121550, 61490, 301041]]
[14, [1, -14, 77, -182, 0, 924, -1547, -506, 3003, 0, -1729, -8372, 9177, 13090, -15625, 0, -17017, 10556, 30107, 0, 7084, -89206, 11571, 69160, 0, 27132, 0, -19096, -153502, 0, 93093, 165242, 0, -38962, 0, -420838, 257439, 0, -76153, 218750, 168245, 397320, -638066, -399126, 0, 67158, 92092, 530348, 0, 0, 424879]]
[15, [1, -15, 90, -245, 105, 1107, -2485, 195, 4860, -2420, -3990, -8190, 19695, 13755, -38475, 3990, -9750, 34020, 43015, -46605, -13860, -127385, 106485, 165240, -79275, -16380, -92340, -35840, -151995, 188550, 315783, 90090, -271215, -307485, 20475, -505440, 915385, 209340, -284130, 337645, -294225, 269325, -1707970, -70305, 1297620, 574210, 492765, 251370, -847245, -1102725, 438129]]
[16, [1, -16, 104, -320, 260, 1248, -3712, 1664, 6890, -7280, -5568, -4160, 33176, 4640, -74240, 29824, 14035, 54288, 27040, -142720, 1508, -110240, 289536, 222720, -380770, -83200, -123904, 142912, 7640, 408000, 386048, -530816, -755943, -294320, 716560, -194688, 1843200, -250432, -1688960, 324480, -988858, 1025440, -2283008, 1963520, 3857360, -1118240, -965120, -2204800, -2004730, -976720, 3450304]]
[17, [1, -17, 119, -408, 476, 1309, -5236, 4233, 8602, -15470, -4250, 5236, 45815, -21182, -117776, 101065, 46767, 36685, -36771, -267036, 143514, -18241, 486285, 81753, -1007250, 104006, 165767, 579292, 78829, 187510, 60214, -1706885, -616539, 956879, 2210985, -450109, 1609730, -2449615, -4158149, 2521015, -86275, 3856314, -3279895, 3835982, 4922435, -9624346, -2911454, -2670955, 2759372, 4788186, 8763296]]
[18, [1, -18, 135, -510, 765, 1242, -7038, 8280, 9180, -27710, 3519, 20196, 50370, -68850, -153765, 244782, 52785, -71010, -130525, -343620, 517293, 54978, 498780, -390150, -1835865, 1161270, 896751, 793730, -633420, -906660, -75582, -2589984, 1523745, 3589380, 2472615, -3740850, -767039, -4649670, -4222800, 11166210, 1718937, 4728294, -10403235, 2349450, 5331285, -23826622, 6799950, 7601040, 14132100, 7375230, -989604]]
[19, [1, -19, 152, -627, 1140, 988, -9063, 14212, 7410, -44270, 22781, 38114, 36176, -137256, -154850, 480605, -46493, -316065, -153406, -254525, 1156948, -184927, 88483, -1051042, -2381650, 3838874, 1417039, -542146, -2649911, -2171510, 2131306, -2282489, 5694509, 5022973, -2849050, -10735551, -1364789, -88825, 1790369, 24936550, -6189326, -6533150, -25397471, 6233254, 19679725, -38263549, 39975430, 19318117, 5441714, -16667750, -38728042]]
[20, [1, -20, 170, -760, 1615, 476, -11210, 22440, 1615, -64600, 60002, 51680, -9520, -213180, -83980, 803528, -379525, -692360, 119700, 80920, 1899830, -1235360, -755990, -1200040, -1981435, 8388956, -361760, -5068440, -4585935, -788120, 9421910, -2949160, 8315255, 768740, -16070560, -13715512, 10200340, 16428540, 5608780, 28549800, -40127031, -28504580, -23992440, 43014080, 60146875, -77059100, 80840440, -5335960, -56174545, -45601520, -56122066]]
[21, [1, -21, 189, -910, 2205, -378, -13321, 33345, -10395, -86870, 122703, 46683, -98287, -264915, 96390, 1163064, -1113588, -1066527, 1042055, 536025, 2287467, -3603805, -1391733, 478170, -562555, 13742379, -7889805, -12745348, -1009470, 6926850, 21064883, -13691664, 4004343, -8355270, -30343950, 5444712, 39441969, 30902949, -22027005, 4899895, -91000161, -20752011, 44496424, 116926740, 78003135, -226108554, 116695530, -60695838, -129044790, 45585540, 12284811]]
[22, [1, -22, 209, -1078, 2926, -1672, -15169, 47234, -31350, -107426, 218680, -266, -234707, -237006, 405878, 1444806, -2415413, -1091398, 3018169, 523050, 1618309, -7344304, -134905, 5365866, 5852, 17297588, -24278276, -18767364, 17865419, 19729952, 27154743, -49645442, -3483403, -4925446, -31064495, 61081922, 61961867, -55594, -108218187, -18341400, -88377696, 77121660, 185417067, 120639398, -58813391, -545883338, 294675997, 2967910, -128962680, 344990030, 286748]]
[23, [1, -23, 230, -1265, 3795, -3519, -16445, 64285, -64515, -120175, 354706, -123763, -407560, -48530, 817190, 1464341, -4376693, -135355, 6303955, -1282710, -682088, -11372603, 5678585, 13479425, -5451115, 16579596, -48805655, -11515065, 61570080, 21234520, 7731427, -119019296, 17214120, 46163645, -22347260, 134763417, 9991982, -115146395, -208431980, 72814665, 62601078, 221269499, 248467505, -164778900, -396525635, -820862617, 1040502519, 303756860, -310026775, 615008615, -577640492]]
[24, [1, -24, 252, -1472, 4830, -6048, -16744, 84480, -113643, -115920, 534612, -370944, -577738, 401856, 1217160, 987136, -6905934, 2727432, 10661420, -7109760, -4219488, -12830688, 18643272, 21288960, -25499225, 13865712, -73279080, 24647168, 128406630, -29211840, -52843168, -196706304, 134722224, 165742416, -80873520, 167282496, -182213314, -255874080, -145589976, 408038400, 308120442, 101267712, -17125708, -786948864, -548895690, -447438528, 2687348496, 248758272, -1696965207, 611981400, -1740295368]]
[25, [1, -25, 275, -1700, 6050, -9405, -15550, 107525, -182875, -81675, 756655, -801550, -662975, 1220175, 1361350, -209440, -9601900, 8608900, 14889050, -19948500, -6262465, -7057550, 38788925, 19716425, -69119875, 23579969, -82427400, 98068850, 191984400, -192983175, -128640655, -199535875, 424794500, 284736850, -398127725, 141193525, -454458725, -190957250, 306041450, 867327675, 248309215, -781592900, -498119600, -1140582625, 331248600, 951687880, 4441237625, -2000633400, -5357206250, 1875749425, -1810005816]]
[26, [1, -26, 299, -1950, 7475, -13754, -12220, 132756, -276575, 0, 1010100, -1486030, -519961, 2486300, 829725, -2215486, -11643060, 18523050, 16317925, -42861650, 0, 11010090, 59644221, -5743400, -138219900, 79631474, -64447293, 190305726, 197368275, -523231800, -99201921, 0, 873014519, 160509700, -1222259675, 305612684, -511748120, 355081636, 1089106200, 759784300, -698434100, -2494548030, 0, 0, 2468263525, 2158297050, 3767134280, -8192279446, -9594939900, 9772308650, 1157638599]]
[27, [1, -27, 324, -2223, 9126, -19278, -5967, 159030, -399087, 151593, 1270971, -2500875, 74970, 4203522, -1004157, -4796037, -11750778, 32885190, 10452375, -77533092, 27104868, 43070625, 63798840, -69960267, -215939061, 236414349, -37046646, 237487433, 85921371, -1008703449, 286178139, 474257484, 1224628470, -608265126, -2606289075, 1473758712, 10716732, 1192052160, 1464312006, -1064732643, -2341040562, -3747291822, 3750796530, 2904349500, 3309301413, -30203550, -1508652000, -15903743310, -7320117141, 31078702161, 1804201776]]
[28, [1, -28, 350, -2520, 11025, -26180, 4158, 184600, -554400, 401100, 1496964, -3920280, 1444625, 6224400, -4972350, -7121296, -8308965, 50796900, -8971200, -121968000, 94011435, 80598288, 20282500, -175228200, -254651775, 554394204, -88470242, 133725200, -133867445, -1515976700, 1369368000, 1033213272, 879369575, -2314141200, -3980458300, 5107622936, 781936407, 910872900, 222868800, -5087226200, -2187994564, -1973664000, 11996468950, 3892051800, -3360359625, -6947241084, -7654070088, -15374268000, 9869832000, 62945277200, -22144800636]]
[29, [1, -29, 377, -2842, 13195, -34684, 19285, 206973, -745706, 782275, 1621564, -5803161, 4026360, 8149841, -12056025, -7428263, 254504, 69194580, -49156653, -167517050, 224634319, 94868280, -112333182, -288914501, -172722550, 1061590530, -420678727, -212254364, -271663242, -1795846200, 3413927270, 967351840, -978399506, -4524424502, -3825362450, 12725565255, -657413528, -3315667498, -2494031813, -9144119775, 5035400442, 3578388387, 20759047670, -5893341662, -22777727375, -8797952807, -1616838769, 3681888314, 36274904939, 80118476175, -103728485744]]
[30, [1, -30, 405, -3190, 15660, -45036, 40745, 222750, -974835, 1334580, 1547469, -8174520, 8380245, 9200250, -23243355, -2643380, 14704740, 82050570, -116275500, -195804810, 442809990, 25147930, -371898000, -313802910, 125394405, 1688931000, -1364323095, -737497840, 158838945, -1653918750, 6309965146, -1076120370, -4802530500, -5257026620, -47508120, 24290828532, -10318690855, -13910780610, -1364146515, -7675874280, 24023587500, 5245892100, 18578165165, -33913100250, -47491260255, 23066963660, 27308816280, 29296187730, 36536324105, 44794138050, -245483273862]]
[31, [1, -31, 434, -3565, 18445, -57505, 70091, 227447, -1241550, 2102730, 1139498, -11000164, 15185009, 8060465, -39266925, 11975548, 33735905, 79961555, -212042635, -176681400, 762467041, -231771190, -762218948, -59474275, 687626655, 2193123086, -3317871844, -996975686, 1948141060, -1380351105, 9298132746, -6788705842, -9608214462, -500684100, 8195740630, 35945695112, -37464288578, -27703334946, 18233392140, 3452352820, 50110166442, -18648267155, -5426442244, -68394536935, -47776054550, 125566716471, 51003097355, 3739338358, -34904617090, -37022572120, -360301225363]]
[32, [1, -32, 464, -3968, 21576, -72384, 109120, 215296, -1542684, 3135712, 217248, -14153856, 25215616, 2704192, -60182656, 43083520, 52111434, 50631680, -328746320, -68928128, 1172526144, -825260672, -1202344640, 768450816, 1395312728, 2106191584, -6556788640, 100803072, 5930017280, -2446579520, 11062835584, -17191741952, -11762712973, 14959546528, 16880156208, 38804082816, -90268764128, -27924752384, 79537896320, 11907174400, 59476916292, -96945887328, -36151163360, -58860723712, 11806125312, 301046180224, -41929489920, -152538292480, -142811793922, -40571481632, -282758291200]]
[33, [1, -33, 495, -4400, 25080, -89991, 159896, 179025, -1871100, 4485140, -1452132, -17376120, 39295135, -9791100, -84751920, 99240515, 58170882, -19058490, -443044250, 173982600, 1617603372, -1940174742, -1456327455, 2535117750, 1782559240, 783282456, -10878123663, 4453210080, 12274486950, -8274669480, 10738181916, -30949593906, -4649643405, 44427298525, 12632491905, 22022095887, -166221342056, 21965133795, 201364886250, -36031327805, 13370409459, -232741171476, 2257921270, 73994101500, 103475478645, 461792586948, -436927039032, -414115099695, -36601699750, 242404463730, 31750490970]]
[34, [1, -34, 527, -4862, 28985, -110670, 224774, 109616, -2214454, 6202790, -4160563, -20224152, 58212420, -33421286, -109592285, 190464702, 30766260, -138537388, -509479358, 590424450, 1978075528, -3762986788, -1052300952, 5565993766, 814913275, -2348596580, -15108004380, 14570701530, 19246124150, -24572149690, 10398722367, -42736429098, 19198424003, 83788921020, -29646853725, -16183052760, -240028781751, 173007827374, 367539275460, -257643143340, -99099230160, -344243246886, 252100115707, 356338645124, 24177692825, 446603464544, -1249233123069, -441921135810, 765164623614, 771325632000, 152306691108]]
[35, [1, -35, 560, -5355, 33320, -134792, 306425, -3960, -2553740, 8337140, -8264431, -22012620, 82596080, -73399200, -128071540, 327108117, -64156470, -305606350, -455573580, 1186922730, 2056498976, -6416740355, 788588570, 9925006980, -3311307160, -7223330464, -16617037990, 32704289240, 21589314305, -58378128620, 19258974280, -43471191470, 61914761755, 115717397495, -142117772440, -48251561329, -258673133355, 462387945810, 485243715915, -824196278360, -158905982564, -216715690380, 829306675115, 595583270100, -665090670370, 246500217957, -2246704399660, 504524131615, 2608529471870, 601239063870, -912722944252]]
500次までに現れる0の個数
[1, 464]
[2, 243]
[3, 469]
[4, 158]
[5, 0]
[6, 212]
[7, 0]
[8, 250]
[9, 0]
[10, 151]
[11, 0]
[12, 0]
[13, 0]
[14, 172]
[15, 2]
[16, 0]
[17, 0]
[18, 0]
[19, 0]
[20, 0]
[21, 0]
[22, 0]
[23, 0]
[24, 0]
[25, 0]
[26, 80]
[27, 0]
[28, 0]
[29, 0]
[30, 0]
[31, 0]
[32, 0]
[33, 0]
[34, 0]
[35, 0]

0 件のコメント:

コメントを投稿

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