2017年5月28日日曜日

170528(3)

Ruby


Number of ways of writing n as a sum of k squares

A186690 と関係がある。

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 B(k, n)
  A([[2, 5 * k], [1, -2 * k], [4, -2 * k]], n)
end

n = 30
(1..48).each{|i| p [i, B(i, n)]}

出力結果
[1, [1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0]]
[2, [1, 4, 4, 0, 4, 8, 0, 0, 4, 4, 8, 0, 0, 8, 0, 0, 4, 8, 4, 0, 8, 0, 0, 0, 0, 12, 8, 0, 0, 8, 0]]
[3, [1, 6, 12, 8, 6, 24, 24, 0, 12, 30, 24, 24, 8, 24, 48, 0, 6, 48, 36, 24, 24, 48, 24, 0, 24, 30, 72, 32, 0, 72, 48]]
[4, [1, 8, 24, 32, 24, 48, 96, 64, 24, 104, 144, 96, 96, 112, 192, 192, 24, 144, 312, 160, 144, 256, 288, 192, 96, 248, 336, 320, 192, 240, 576]]
[5, [1, 10, 40, 80, 90, 112, 240, 320, 200, 250, 560, 560, 400, 560, 800, 960, 730, 480, 1240, 1520, 752, 1120, 1840, 1600, 1200, 1210, 2000, 2240, 1600, 1680, 2720]]
[6, [1, 12, 60, 160, 252, 312, 544, 960, 1020, 876, 1560, 2400, 2080, 2040, 3264, 4160, 4092, 3480, 4380, 7200, 6552, 4608, 8160, 10560, 8224, 7812, 10200, 13120, 12480, 10104, 14144]]
[7, [1, 14, 84, 280, 574, 840, 1288, 2368, 3444, 3542, 4424, 7560, 9240, 8456, 11088, 16576, 18494, 17808, 19740, 27720, 34440, 29456, 31304, 49728, 52808, 43414, 52248, 68320, 74048, 68376, 71120]]
[8, [1, 16, 112, 448, 1136, 2016, 3136, 5504, 9328, 12112, 14112, 21312, 31808, 35168, 38528, 56448, 74864, 78624, 84784, 109760, 143136, 154112, 149184, 194688, 261184, 252016, 246176, 327040, 390784, 390240, 395136]]
[9, [1, 18, 144, 672, 2034, 4320, 7392, 12672, 22608, 34802, 44640, 60768, 93984, 125280, 141120, 182400, 262386, 317376, 343536, 421344, 557280, 665280, 703584, 800640, 1068384, 1256562, 1234080, 1421184, 1851264, 2034720, 2057280]]
[10, [1, 20, 180, 960, 3380, 8424, 16320, 28800, 52020, 88660, 129064, 175680, 262080, 386920, 489600, 600960, 840500, 1137960, 1330420, 1563840, 2050344, 2611200, 2986560, 3358080, 4194240, 5318268, 5878440, 6299520, 7862400, 9619560, 10216320]]
[11, [1, 22, 220, 1320, 5302, 15224, 33528, 63360, 116380, 209550, 339064, 491768, 719400, 1095160, 1538416, 1964160, 2624182, 3696880, 4763220, 5686648, 7217144, 9528816, 11676280, 13495680, 16317048, 20787470, 25022184, 27785120, 32503680, 40862184, 47430768]]
[12, [1, 24, 264, 1760, 7944, 25872, 64416, 133056, 253704, 472760, 825264, 1297056, 1938336, 2963664, 4437312, 6091584, 8118024, 11368368, 15653352, 19822176, 24832944, 32826112, 42517728, 51425088, 61903776, 78146664, 98021616, 115331264, 133522752, 164079696, 201364416]]
[13, [1, 26, 312, 2288, 11466, 41808, 116688, 265408, 535704, 1031914, 1899664, 3214224, 5043376, 7801744, 12066912, 17689152, 24443978, 34039200, 48210760, 64966096, 83323344, 109157152, 145532816, 185245632, 227110416, 284788010, 363737712, 448126016, 531517376, 643027632, 800145632]]
[14, [1, 28, 364, 2912, 16044, 64792, 200928, 503360, 1089452, 2186940, 4196920, 7544992, 12547808, 19975256, 31553344, 48484800, 70439852, 99602104, 142487436, 200569824, 268594872, 354052608, 476105504, 630908096, 800698080, 1008274932, 1296257144, 1648943296, 2022013760, 2457911512, 3056208064]]
[15, [1, 30, 420, 3640, 21870, 96936, 331240, 911040, 2128260, 4495430, 8972712, 16946280, 29822520, 49476840, 80027280, 127083328, 193511790, 282611280, 409172940, 590913960, 825736296, 1115671760, 1509537960, 2048372160, 2698852520, 3463029894, 4472616120, 5803339360, 7347537600, 9095661240, 11335886864]]
[16, [1, 32, 480, 4480, 29152, 140736, 525952, 1580800, 3994080, 8945824, 18626112, 36714624, 67978880, 118156480, 197120256, 321692928, 509145568, 772845120, 1143441760, 1681379200, 2428524096, 3392205824, 4658843520, 6411152640, 8705492608, 11488092896, 15000919872, 19697555200, 25593401600, 32467266240, 40864033536]]
[17, [1, 34, 544, 5440, 38114, 199104, 808384, 2641664, 7213984, 17215458, 37569728, 77129408, 149405248, 272064192, 470966912, 790414592, 1291650786, 2035437440, 3101265120, 4648909760, 6883061184, 9931183488, 13967503552, 19489000192, 27036220096, 36719672546, 48877735232, 64882013952, 85898222336, 111723674688, 142979339392]]
[18, [1, 36, 612, 6528, 48996, 275400, 1207680, 4269312, 12573540, 32041636, 73617480, 157553280, 318102912, 605381832, 1090632960, 1888224000, 3176573796, 5177295432, 8148505828, 12507419520, 18918517320, 28067389440, 40578145920, 57669043968, 81375600000, 113272212204, 154398101832, 207972274944, 279331331328, 371269791432, 484986858240]]
[19, [1, 38, 684, 7752, 62054, 373464, 1759704, 6697728, 21210156, 57739518, 140116184, 313328088, 658369608, 1305768920, 2449182384, 4387011840, 7597766246, 12766353840, 20748447108, 32728127192, 50601708504, 76895771568, 114223115480, 166029979392, 238352317656, 338575421950, 472600643976, 648718685984, 883678139136, 1195524774792, 1594639240368]]
[20, [1, 40, 760, 9120, 77560, 497648, 2508000, 10232640, 34729720, 100906760, 259114704, 606957280, 1327461600, 2738111280, 5341699520, 9915552192, 17701924600, 30615844560, 51294999960, 83279292960, 131880275664, 204949382400, 312126610080, 464844224960, 680432137440, 984382611928, 1404010658960, 1968103484480, 2724593155520, 3743846975920, 5089580732736]]
[21, [1, 42, 840, 10640, 95802, 652848, 3504816, 15266880, 55350120, 171361498, 465944304, 1145653488, 2610853840, 5595003120, 11337146784, 21817881792, 40208417466, 71565375840, 123411903160, 206218644912, 335056780464, 532597541344, 830096613360, 1266359895360, 1893781702512, 2790751314330, 4058779021584, 5809617168320, 8190877926720, 11431035439824, 15805879161632]]
[22, [1, 44, 924, 12320, 117084, 844536, 4812192, 22297792, 86075484, 283367436, 815677016, 2108077536, 5012882336, 11159625400, 23460347328, 46790491968, 89096422492, 163282917336, 289559673084, 497610124704, 830202403800, 1351064867328, 2153312518240, 3361695239232, 5140361517984, 7724269359972, 11444537517336, 16709010117184, 24015334687168, 34075597680696, 47873378766400]]
[23, [1, 46, 1012, 14168, 141726, 1078792, 6503112, 31946816, 130905236, 457207478, 1392036360, 3784029000, 9401213016, 21752359112, 47412641232, 97936966080, 192747766686, 363967164176, 663612939132, 1171941833480, 2007831887432, 3348062963344, 5456890474248, 8710505815360, 13617909938952, 20885881710454, 31527898462552, 46904811133408, 68719323996224, 99237530067544, 141662701280848]]
[24, [1, 48, 1104, 16192, 170064, 1362336, 8662720, 44981376, 195082320, 721175536, 2319457632, 6631997376, 17231109824, 41469483552, 93703589760, 200343312768, 407488018512, 793229226336, 1487286966928, 2697825744960, 4744779429216, 8110465650176, 13523760003648, 22063059606912, 35250721087168, 55204237463376, 84944161233120, 128716413627520, 192127452262272, 282507110257440, 409984511707776]]
[25, [1, 50, 1200, 18400, 202450, 1702560, 11389600, 62339200, 285385200, 1114064850, 3779134240, 11360877600, 30885301600, 77374394400, 181284196800, 401031812480, 842726826450, 1691534395200, 3262594952400, 6077725252000, 10968671291040, 19220947905600, 32802221530400, 54693728246400, 89267475949600, 142743029326162, 223991253535200, 345718693238400, 525491835433600, 786742987874400, 1161295395893440]]
[26, [1, 52, 1300, 20800, 239252, 2107560, 14797120, 85155200, 410468500, 1688240372, 6030043240, 19043826880, 54177864000, 141373532200, 343594659200, 786344740480, 1706685733012, 3532307607400, 7010460268500, 13412537087040, 24832297608040, 44603133286400, 77924078814400, 132816314883200, 221394909419840, 361407558819164, 578472382307304, 909636568464000, 1407681394953600, 2145304809169704, 3221568346322560]]
[27, [1, 54, 1404, 23400, 280854, 2586168, 19014840, 114791040, 581257404, 2513392494, 9436118328, 31274226360, 93086496360, 253106219448, 638406025200, 1511651306880, 3387901252374, 7229247074928, 14765641285044, 29018207233080, 55108831380408, 101440703660400, 181434042582840, 316176906314880, 538265644820280, 896820392178414, 1464212332875816, 2346272971038368, 3696677780664960, 5733430059474216, 8759016189382896]]
[28, [1, 56, 1512, 26208, 327656, 3147984, 24189984, 152867520, 811401192, 3681079640, 14500933104, 50376047904, 156797510688, 444306558864, 1163495873088, 2851049839680, 6597606440936, 14512424533488, 30505974273096, 61591664700384, 119983597365744, 226303038736128, 414352982942304, 738358447579200, 1283861585339424, 2183013918429512, 3635198568784944, 5936645280445376, 9523977599887936, 15031150280922384, 23358459198626496]]
[29, [1, 58, 1624, 29232, 380074, 3803408, 30488976, 201299904, 1117791544, 5310177994, 21911472464, 79683652176, 259172461296, 765264394832, 2081117152992, 5278842061632, 12613606876714, 28597873335584, 61865177248552, 128334714844560, 256462892399504, 495608683851936, 928859670458448, 1692575040345792, 3006249397711056, 5216545741621770, 8858986222461872, 14744872013818688, 24088488255932096, 38685989126061808, 61146089973555552]]
[30, [1, 60, 1740, 32480, 438540, 4563672, 38099040, 262336320, 1521151500, 7553367900, 32592806520, 123909200160, 420775407200, 1294230433560, 3655476494400, 9600504649920, 23690038522380, 55357851461880, 123233778584940, 262666576468320, 538518903906552, 1066248567851520, 2045337982427040, 3811126447857600, 6914885182908000, 12245499738857172, 21207036616238520, 35971884261238720, 59847918853661760, 97810513435518360, 157231420280219584]]
[31, [1, 62, 1860, 35960, 503502, 5440872, 47229864, 338599360, 2046701220, 10604798246, 47775740520, 189619489320, 671636175480, 2150888860840, 6309132101904, 17159352237120, 43733123309262, 105329431676880, 241275541236780, 528400328616040, 1111479953165352, 2254843638530128, 4426891212365160, 8434447043309760, 15633379938039144, 28255162424156774, 49899492947343864, 86254925765004640, 146147632445771200, 243076976890113528, 397406328481552528]]
[32, [1, 64, 1984, 39680, 575424, 6448000, 58115328, 433131008, 2724906944, 14709082432, 69079796864, 285848172800, 1054968628480, 3515371815296, 10706472186368, 30156949879296, 79395777333184, 197101549419648, 464573878394560, 1045365667116800, 2256126097001600, 4689805691447296, 9423431444080384, 18357649066674688, 34759556728866048, 64119097033510336, 115474354635222656, 203405736067767808, 350982387781513728, 594109828315028864, 987881573708613120]]
[33, [1, 66, 2112, 43648, 654786, 7598976, 71015296, 549441024, 3592319808, 20171792322, 98614192512, 424874032512, 1632114867328, 5654728387968, 17875388306688, 52141706828288, 141820480610754, 362929297530624, 880219339775424, 2034965483337600, 4506220683398016, 9598370934442752, 19739221443625344, 39316657099703808, 76047426405791104, 143176642846968258, 262953752848837248, 471999462924701184, 829405814646351360, 1428832080883861632, 2416450963949279488]]
[34, [1, 68, 2244, 47872, 742084, 8908680, 86217472, 691558912, 4692511428, 27371629892, 139099807880, 623201303808, 2489047659264, 8959303016840, 29382088665600, 88742373537280, 249369222884036, 657886900167816, 1641869055038916, 3899884805017344, 8860642360669320, 19339935141232640, 40707711590868224, 82900782829125120, 163797472570290944, 314751918832242124, 589511537253470856, 1078301571249403392, 1929572788503833088, 3383020746695382408, 5819255124075374080]]
[35, [1, 70, 2380, 52360, 837830, 10392984, 104039320, 864089600, 6077113420, 36774470110, 194015502744, 902784041880, 3744835385480, 13992143079320, 47578912132400, 148753125911040, 431833448394950, 1174553336992560, 3016461775970020, 7361385861881240, 17160396820563864, 38381971776042800, 82689238761879960, 172174741181345280, 347497817081977240, 681525527444317150, 1301746850099643080, 2426411195927285280, 4421575623848670720, 7889409364696389320, 13803058326450694448]]
[36, [1, 72, 2520, 57120, 942552, 12068784, 124830048, 1072272960, 7806968280, 48949482920, 267772521744, 1292543231328, 5562557800800, 21555364466160, 75951250082496, 245716726338240, 736831099167192, 2066216674168080, 5460799823164920, 13692203696753568, 32748641010875664, 75059361782712576, 165514090360142880, 352371149981311680, 726465611491844448, 1454148845606087352, 2832525877217028048, 5380289107609290560, 9984123911261833920, 18129960445211327088, 32262229857439895616]]
[37, [1, 74, 2664, 62160, 1056794, 13954032, 148972656, 1322047296, 9953399304, 64587557050, 365921147824, 1830232825776, 8163258314256, 32778380918704, 119597548195872, 400204562625984, 1239391811991194, 3583005215371488, 9745233570636952, 25105772340917616, 61609295691064944, 144700202292539232, 326597524550490288, 710935642739815488, 1497196642542832176, 3058672552252501626, 6075984718042868304, 11761007346738767552, 22225028881973326912, 41072046351699738384, 74337473128386333600]]
[38, [1, 76, 2812, 67488, 1181116, 16067768, 176886048, 1620116928, 12599607484, 84522263724, 495394207384, 2564719221344, 11843630888736, 49234074774904, 185886180236992, 643060422614592, 2056130097966268, 6127365507990040, 17150568272891100, 45397380449863456, 114303284464647704, 275101130649948672, 635553953336625376, 1414581434263117632, 3043086948436643616, 6344945154722340932, 12853691613921890904, 25354342195911065920, 48791664731735114432, 91762733368297476344, 168923174867580925248]]
[39, [1, 78, 2964, 73112, 1316094, 18430152, 209027208, 1974024000, 15842203572, 109753614230, 664792507080, 3558747875592, 16998268681368, 73090383442056, 285345150337104, 1019962575303360, 3365941445206782, 10338119052687504, 29777240693878236, 80985628629424584, 209215435001112072, 515986117889137168, 1220155819685626824, 2776855877436803136, 6102142531936618440, 12985433742135985494, 26826945551844218520, 53925194558265313504, 105677341468592172864, 202264658178293594520, 378706598865712166608]]
[40, [1, 80, 3120, 79040, 1462320, 21062496, 245893440, 2392224640, 19792883760, 141474881680, 884717790112, 4892280943680, 24147448985920, 107306430665440, 432855539095680, 1597770789783168, 5439867081224240, 17216214394392480, 51024388607161840, 142581364752948160, 377925692648758176, 955127222570959360, 2311828718036596160, 5379709468315628160, 12076325113647462720, 26228423144185138736, 55258802243177832480, 113192359015710870400, 225894020902792394880, 440008785650521651680, 837922349252103601536]]
[41, [1, 82, 3280, 85280, 1620402, 23987296, 288024672, 2884169600, 24580257680, 181102774194, 1168159340512, 6666500979424, 33971596798880, 155884281325280, 649237878131776, 2473266921648768, 8683708343211698, 28310601003939520, 86322811423907760, 247827452982576480, 673977940881914976, 1745459331597357504, 4324346553745956320, 10289395349757357440, 23594791016741569248, 52302207833734194738, 112373740165845667616, 234571441000474008960, 476716600185913087360, 945009739742638490784, 1830368645195764804928]]
[42, [1, 84, 3444, 91840, 1790964, 27228264, 336005824, 3460389504, 30351837684, 230311264148, 1530940938408, 9008588006208, 47353759443648, 224189683712232, 963342807437952, 3785076255920512, 13698191148446196, 45989835413529000, 144242851393605300, 425421945992541120, 1187013596538690984, 3150104358610638848, 7988222608927186752, 19435041844739025792, 45526484181023926976, 103000076309304020028, 225683472479132529960, 480070370987529840000, 993544787069503165056, 2004395623432262776296, 3948627822151732074880]]
[43, [1, 86, 3612, 98728, 1974646, 30810360, 390469240, 4132584832, 37276198620, 291069396046, 1992235478520, 12077390668920, 65431639315112, 319357828709752, 1414784111195760, 5729779718820480, 21363058099953526, 73834657781521392, 238149668458074388, 721480863173653240, 2065271888000259960, 5616205930088422640, 14577365408975111160, 36264257647114136448, 86778165276794876920, 200380650231492572366, 447752053048303878504, 970595903355236181408, 2045589436006114852224, 4199859825762325534824, 8415088149377413297520]]
[44, [1, 88, 3784, 105952, 2172104, 34759824, 452097184, 4913720768, 45545317576, 365683414008, 2575155209264, 16070126802848, 89660973247648, 450803250081360, 2057484301193024, 8583503503488320, 32953489081394376, 117199564191245360, 388649134382308008, 1209243743998597472, 3550983885332760624, 9894549884992236288, 26286715322506463200, 66864779767899226432, 163448683981013707936, 385212119343597870632, 877815757629273245552, 1939104848237769705152, 4161780665859803103040, 8695931180729202272720, 17721547148427132981696]]
[45, [1, 90, 3960, 113520, 2384010, 39104208, 521624400, 5818127040, 55377103320, 456843568810, 3307426231824, 21230264670480, 121892317700400, 630856567748880, 2964241181293920, 12730613263674432, 50299827862307850, 184008239944832160, 627163962734020360, 2003714170080820560, 6035410491750694224, 17231096106056263200, 46854014968659908880, 121860812879339175360, 304297378385575293840, 731964494785139375850, 1701047831240174822640, 3829243253441132878400, 8369306397107313831360, 17797019620513174248240, 36888834239882740396512]]
[46, [1, 92, 4140, 121440, 2611052, 43872408, 599840736, 6861602880, 67018125420, 567675983868, 4222156618424, 27856753396128, 164463601475040, 875554895055320, 4232569247463744, 18701557198852032, 76004850661311596, 285869719559152440, 1001109838673418060, 3283509936928900832, 10143480948171060024, 29670177354160925184, 82571796820419222560, 219582199650819476160, 560115286465036588512, 1375122044337814243252, 3259052873842515520248, 7476314912066158264000, 16640395332885527444800, 36011633486994722316888, 75919437264083991860928]]
[47, [1, 94, 4324, 129720, 2853934, 49094696, 687593832, 8061527232, 80746553284, 701799979526, 5358708267816, 36314789847016, 220311144761016, 1205617455195240, 5992123438556048, 27222410400253248, 113736905985171502, 439630664708137296, 1581315551638626444, 5323141172986920744, 16862566236863499240, 50529207616912045008, 143916122317077701160, 391301278317733856192, 1019604050911451615784, 2554844982812883861574, 6175012304042413993784, 14435587334443681893472, 32719823078748978144448, 72062956954447543145784, 154520158805605372057872]]
[48, [1, 96, 4512, 138368, 3113376, 54802752, 785791872, 9436974336, 96875315616, 863391275488, 6763683414720, 47048329445760, 293102217821056, 1647643350384192, 8414075863671552, 39279288232247040, 168622365198254496, 669515873081977536, 2472562531531980832, 8540227814481475200, 27736395024393085632, 85134042042443029504, 248139579890464622208, 689791789560863266560, 1835986185002939939712, 4695338975085181485216, 11573413786349169929664, 27571377202896834548992, 63640852572427508785920, 142646020621279910254656, 311097167722066085728512]]

170528(2)

Ruby


A186690

二通りで求め、一致することを確認してみた。

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

def A186690_1(n)
  (1..n).map{|i| s(1, i) - 5 * s(2, i) / 2 + s(4, i)}
end

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

n = 1000
p ary = A186690_1(n)
p ary == A186690_2(n)

出力結果
[1, -2, 4, -4, 6, -8, 8, -8, 13, -12, 12, -16, 14, -16, 24, -16, 18, -26, 20, -24, 32, -24, 24, -32, 31, -28, 40, -32, 30, -48, 32, -32, 48, -36, 48, -52, 38, -40, 56, -48, 42, -64, 44, -48, 78, -48, 48, -64, 57, -62, 72, -56, 54, -80, 72, -64, 80, -60, 60, -96, 62, -64, 104, -64, 84, -96, 68, -72, 96, -96, 72, -104, 74, -76, 124, -80, 96, -112, 80, -96, 121, -84, 84, -128, 108, -88, 120, -96, 90, -156, 112, -96, 128, -96, 120, -128, 98, -114, 156, -124, 102, -144, 104, -112, 192, -108, 108, -160, 110, -144, 152, -128, 114, -160, 144, -120, 182, -120, 144, -192, 133, -124, 168, -128, 156, -208, 128, -128, 176, -168, 132, -192, 160, -136, 240, -144, 138, -192, 140, -192, 192, -144, 168, -208, 180, -148, 228, -152, 150, -248, 152, -160, 234, -192, 192, -224, 158, -160, 216, -192, 192, -242, 164, -168, 288, -168, 168, -256, 183, -216, 260, -176, 174, -240, 248, -192, 240, -180, 180, -312, 182, -224, 248, -192, 228, -256, 216, -192, 320, -240, 192, -256, 194, -196, 336, -228, 198, -312, 200, -248, 272, -204, 240, -288, 252, -208, 312, -224, 240, -384, 212, -216, 288, -216, 264, -320, 256, -220, 296, -288, 252, -304, 224, -256, 403, -228, 228, -320, 230, -288, 384, -240, 234, -364, 288, -240, 320, -288, 240, -384, 242, -266, 364, -248, 342, -336, 280, -256, 336, -312, 252, -416, 288, -256, 432, -256, 258, -352, 304, -336, 390, -264, 264, -384, 324, -320, 360, -272, 270, -480, 272, -288, 448, -276, 372, -384, 278, -280, 416, -384, 282, -384, 284, -288, 480, -336, 336, -416, 307, -360, 392, -296, 294, -456, 360, -304, 480, -300, 336, -496, 352, -304, 408, -320, 372, -468, 308, -384, 416, -384, 312, -448, 314, -316, 624, -320, 318, -432, 360, -384, 432, -384, 360, -484, 434, -328, 440, -336, 384, -576, 332, -336, 494, -336, 408, -512, 338, -366, 456, -432, 384, -520, 400, -352, 576, -348, 348, -480, 350, -496, 560, -384, 354, -480, 432, -360, 576, -360, 360, -624, 381, -364, 532, -448, 444, -496, 368, -384, 546, -456, 432, -512, 374, -432, 624, -384, 420, -640, 380, -480, 512, -384, 384, -512, 576, -388, 572, -392, 390, -672, 432, -456, 528, -396, 480, -624, 398, -400, 640, -496, 402, -544, 448, -408, 726, -480, 456, -576, 410, -504, 552, -416, 480, -624, 504, -448, 560, -480, 420, -768, 422, -424, 624, -432, 558, -576, 496, -432, 672, -528, 432, -640, 434, -512, 720, -440, 480, -592, 440, -576, 741, -504, 444, -608, 540, -448, 600, -512, 450, -806, 504, -456, 608, -456, 672, -640, 458, -460, 720, -576, 462, -768, 464, -480, 768, -468, 468, -728, 544, -576, 632, -480, 528, -640, 620, -576, 702, -480, 480, -768, 532, -484, 768, -532, 588, -728, 488, -496, 656, -684, 492, -672, 540, -560, 936, -512, 576, -672, 500, -624, 672, -504, 504, -832, 612, -576, 732, -512, 510, -864, 592, -512, 800, -516, 624, -704, 576, -608, 696, -672, 522, -780, 524, -528, 992, -528, 576, -768, 553, -648, 780, -640, 588, -720, 648, -544, 720, -540, 684, -960, 542, -544, 728, -576, 660, -896, 548, -552, 806, -744, 600, -768, 640, -556, 912, -560, 558, -832, 616, -768, 864, -564, 564, -768, 684, -568, 968, -576, 570, -960, 572, -672, 768, -672, 744, -832, 578, -614, 776, -720, 672, -784, 648, -592, 1092, -588, 588, -912, 640, -720, 792, -608, 594, -960, 864, -600, 800, -672, 600, -992, 602, -704, 884, -608, 798, -816, 608, -640, 960, -744, 672, -936, 614, -616, 1008, -768, 618, -832, 620, -768, 960, -624, 720, -896, 781, -628, 960, -632, 684, -1248, 632, -640, 848, -636, 768, -864, 798, -720, 936, -768, 642, -864, 644, -768, 1056, -720, 648, -968, 720, -868, 1024, -656, 654, -880, 792, -672, 962, -768, 660, -1152, 662, -664, 1008, -672, 960, -988, 720, -672, 896, -816, 744, -1024, 674, -676, 1240, -732, 678, -912, 784, -864, 912, -768, 684, -1040, 828, -800, 920, -704, 756, -1152, 692, -696, 1248, -696, 840, -960, 756, -700, 936, -992, 702, -1120, 760, -768, 1152, -708, 816, -960, 710, -864, 1040, -720, 768, -1152, 1008, -720, 960, -720, 720, -1248, 832, -762, 968, -728, 930, -1064, 728, -896, 1093, -888, 792, -992, 734, -736, 1368, -768, 816, -1092, 740, -912, 1120, -864, 744, -1024, 900, -748, 1092, -864, 864, -1248, 752, -768, 1008, -840, 912, -1280, 758, -760, 1152, -960, 762, -1024, 880, -768, 1404, -768, 840, -1024, 770, -1152, 1032, -776, 774, -1144, 992, -784, 1216, -780, 840, -1344, 864, -864, 1200, -912, 948, -1056, 788, -792, 1056, -960, 912, -1248, 868, -796, 1296, -800, 798, -1280, 864, -992, 1170, -804, 888, -1088, 1152, -896, 1080, -816, 810, -1452, 812, -960, 1088, -912, 984, -1152, 880, -820, 1456, -1008, 822, -1104, 824, -832, 1488, -960, 828, -1248, 830, -1008, 1112, -896, 1026, -1120, 1008, -960, 1280, -840, 840, -1536, 871, -844, 1128, -848, 1098, -1248, 1064, -864, 1136, -1116, 912, -1152, 854, -992, 1560, -864, 858, -1344, 860, -1056, 1344, -864, 864, -1280, 1044, -868, 1228, -1024, 960, -1440, 952, -880, 1274, -960, 1248, -1184, 878, -880, 1176, -1152, 882, -1482, 884, -1008, 1440, -888, 888, -1216, 1024, -1080, 1452, -896, 960, -1200, 1080, -1024, 1344, -900, 960, -1612, 972, -1008, 1408, -912, 1092, -1216, 908, -912, 1326, -1344, 912, -1280, 1008, -916, 1488, -920, 1056, -1440, 920, -1152, 1232, -924, 1008, -1536, 1178, -928, 1352, -960, 930, -1536, 1140, -936, 1248, -936, 1296, -1456, 938, -1088, 1256, -1152, 942, -1264, 1008, -960, 1920, -1056, 948, -1280, 1036, -1240, 1272, -1152, 954, -1404, 1152, -960, 1440, -960, 1104, -1536, 993, -1064, 1404, -968, 1164, -1536, 968, -1064, 1440, -1176, 972, -1456, 1120, -976, 1736, -992, 978, -1312, 1080, -1368, 1430, -984, 984, -1344, 1188, -1080, 1536, -1120, 1056, -1872, 992, -1024, 1328, -1152, 1200, -1344, 998, -1000, 1520, -1248]
true

170528

Ruby


一変数多項式の0乗

ずっと以下のコードの前者を使っていたが、
OEIS のSquare Array が元になっている数列を求めるときは、
後者を使う方が便利なときがある。

# 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 power0(ary, n, m)
  return [1] if n == 0
  k = power0(ary, n >> 1, m)
  k = mul(k, k, m)
  return k if n & 1 == 0
  return mul(k, ary, m)
end

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

m = 20
n = 10
ary = [1, 1]
(0..n).each{|i| p power0(ary, i, m)}
p ""
(0..n).each{|i| p power1(ary, i, m)}
p ""
# power0のように使うことも可能
(0..n).each{|i| p power1(ary, i, i)}
p ""
ary = [1, 1, 1]
(0..n).each{|i| p power0(ary, i, m)}
p ""
(0..n).each{|i| p power1(ary, i, m)}
p ""
# power0のように使うことも可能
(0..n).each{|i| p power1(ary, i, i * 2)}

出力結果
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
""
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 4, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 5, 10, 10, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 6, 15, 20, 15, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 7, 21, 35, 35, 21, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 8, 28, 56, 70, 56, 28, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
""
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
""
[1]
[1, 1, 1]
[1, 2, 3, 2, 1]
[1, 3, 6, 7, 6, 3, 1]
[1, 4, 10, 16, 19, 16, 10, 4, 1]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]
""
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 3, 6, 7, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 4, 10, 16, 19, 16, 10, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1, 0, 0, 0, 0, 0, 0]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1, 0, 0, 0, 0]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1, 0, 0]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]
""
[1]
[1, 1, 1]
[1, 2, 3, 2, 1]
[1, 3, 6, 7, 6, 3, 1]
[1, 4, 10, 16, 19, 16, 10, 4, 1]
[1, 5, 15, 30, 45, 51, 45, 30, 15, 5, 1]
[1, 6, 21, 50, 90, 126, 141, 126, 90, 50, 21, 6, 1]
[1, 7, 28, 77, 161, 266, 357, 393, 357, 266, 161, 77, 28, 7, 1]
[1, 8, 36, 112, 266, 504, 784, 1016, 1107, 1016, 784, 504, 266, 112, 36, 8, 1]
[1, 9, 45, 156, 414, 882, 1554, 2304, 2907, 3139, 2907, 2304, 1554, 882, 414, 156, 45, 9, 1]
[1, 10, 55, 210, 615, 1452, 2850, 4740, 6765, 8350, 8953, 8350, 6765, 4740, 2850, 1452, 615, 210, 55, 10, 1]

2017年5月16日火曜日

170516

Ruby


The 14 primitive eta-products which are holomorphic modular forms of weight 1/2

Mersmann によって重み1/2 の正則なエータ商は14 個であることが証明されている。
q-展開し、OFFSET を0 にしたものがすべてOEIS に載っているので、計算してみた。

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 = 200
# A000122
p A([[2, 5], [1, -2], [4, -2]], n)

# A002448
p A([[1, 2], [2, -1]], n)

# A010054
p A([[2, 2], [1, -1]], n)

# A010815
p A([[1, 1]], n)

# A080995
p A([[2, 1], [3, 2], [1, -1], [6, -1]], n)

# A089801
p A([[2, 2], [3, 1], [12, 1], [1, -1], [4, -1], [6, -1]], n)

# A089802
p A([[1, 1], [6, 2], [2, -1], [3, -1]], n)

# A089807
p A([[1, 1], [4, 1], [6, 2], [2, -1], [3, -1], [12, -1]], n)

# A089810
p A([[2, 2], [3, 1], [1, -1], [6, -1]], n)

# A089812
p A([[1, 2], [6, 1], [2, -1], [3, -1]], n)

# A106459
p A([[1, 1], [4, 1], [2, -1]], n)

# A121373
p A([[2, 3], [1, -1], [4, -1]], n)

# A133985
p A([[1, 1], [4, 1], [6, 5], [2, -2], [3, -2], [12, -2]], n)

# A133988
p A([[2, 5], [3, 1], [12, 1], [1, -2], [4, -2], [6, -2]], n)

出力結果
[1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 2, 0, 0, 0, 0]
[1, -2, 0, 0, 2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 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, 2, 0, 0, 0, 0]
[1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[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, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[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, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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]
[1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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]
[1, -1, 0, 0, -1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 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, 0, 0, 0, 0]
[1, 1, 0, 0, -1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 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, 0, 0, 0, 0]
[1, -2, 0, 1, 0, 0, 1, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, -1, 0, -1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[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, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[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, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 0, -1, 0, 0, 1, 0, 0, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

2017年5月14日日曜日

170514

Ruby


eta products の線形結合

E_6 をeta products の線形結合で表してみた。

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

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

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

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

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

n = 200
p ary0 = A0(n)
p ary1 = [0] + A1(n)
p ary2 = [0] * 2 + A2(n)
p ary3 = [0] * 3 + A3(n)
p (0..n).map{|i| ary0[i] - 480 * ary1[i] - 16896 * ary2[i] + 8192 * ary3[i]}

出力結果
[1, -24, 264, -1760, 7944, -25872, 64416, -133056, 253704, -472760, 825264, -1297056, 1938336, -2963664, 4437312, -6091584, 8118024, -11368368, 15653352, -19822176, 24832944, -32826112, 42517728, -51425088, 61903776, -78146664, 98021616, -115331264, 133522752, -164079696, 201364416, -229101312, 259776264, -314269824, 374842512, -420258432, 471023592, -554746896, 653690400, -724846144, 793078704, -927125232, 1082704128, -1175873952, 1279397088, -1482713808, 1699194816, -1834739328, 1980797856, -2259791448, 2578950264, -2771448768, 2949559536, -3345875856, 3803764800, -4028054976, 4264256832, -4833186688, 5414943600, -5719271712, 6059238336, -6756214608, 7558096128, -7972913344, 8312839944, -9284959200, 10374325632, -10801349856, 11279351952, -12564531456, 13871037312, -14433084864, 15042871272, -16585653744, 18306804912, -19068642080, 19670138400, -21654935808, 23917274304, -24615220608, 25376943024, -28009137752, 30586037328, -31513408608, 32579551488, -35508322080, 38810229216, -40037878848, 40859536608, -44672951664, 48932378352, -49926264960, 51130316736, -55883287552, 60547082112, -61923031104, 63385408416, -68696763696, 74577903048, -76393194528, 77602957944, -84080984592, 91461572928, -92741489856, 94198772976, -102562521600, 110403610416, -112206096288, 114458740800, -123091514832, 132910417728, -135359463232, 136447747392, -147394340016, 159500457600, -160956544896, 162940575600, -176121743248, 188740015200, -190918949760, 193511203776, -207502774008, 222973423728, -226147998912, 227429983488, -244215894432, 263101540416, -264312339456, 266010877704, -286962805888, 306415571616, -308637532896, 312172889472, -332945133312, 356433028512, -360323811456, 360223654032, -386088721392, 414603535104, -415108384416, 417392122752, -447681704448, 476316548928, -478377518784, 481341997032, -512942325984, 547290900816, -551426235360, 550868402352, -587521351824, 629263864416, -628022995776, 628196474400, -673500182256, 714637972224, -715961510400, 719692526784, -763113874512, 812342889600, -816313861440, 812060601264, -865462338048, 924314846664, -920507154912, 920361668688, -982725974784, 1039906730016, -1039128015552, 1040478667008, -1102867760040, 1171757692512, -1174521854176, 1167835079136, -1239722456016, 1321246238400, -1313545628736, 1307424001248, -1395533705856, 1474191694800, -1470135873888, 1472419748592, -1554105008016, 1647547321728, -1648658651200, 1632926218176, -1734153444192, 1844175455232, -1829372897088, 1821916743552, -1937378426368, 2043436190400, -2033547631104, 2028332946336, -2142281587248, 2267057828112, -2265622499712, 2244116900808, -2373665758992, 2521003646304, -2496637706688, 2478371203704]
[0, 1, 0, -12, 0, 54, 0, -88, 0, -99, 0, 540, 0, -418, 0, -648, 0, 594, 0, 836, 0, 1056, 0, -4104, 0, -209, 0, 4104, 0, -594, 0, 4256, 0, -6480, 0, -4752, 0, -298, 0, 5016, 0, 17226, 0, -12100, 0, -5346, 0, -1296, 0, -9063, 0, -7128, 0, 19494, 0, 29160, 0, -10032, 0, -7668, 0, -34738, 0, 8712, 0, -22572, 0, 21812, 0, 49248, 0, -46872, 0, 67562, 0, 2508, 0, -47520, 0, -76912, 0, -25191, 0, 67716, 0, 32076, 0, 7128, 0, 29754, 0, 36784, 0, -51072, 0, 45144, 0, -122398, 0, -53460, 0, 11286, 0, -27256, 0, 57024, 0, 122364, 0, 99902, 0, 3576, 0, -29646, 0, -221616, 0, 41382, 0, -52272, 0, 130549, 0, -206712, 0, -180036, 0, 336512, 0, 145200, 0, 100980, 0, -73568, 0, 221616, 0, -317142, 0, -148324, 0, 15552, 0, -225720, 0, -32076, 0, 108756, 0, 196614, 0, 74360, 0, -58806, 0, 229824, 0, 120878, 0, -233928, 0, 361152, 0, -111340, 0, -349920, 0, -491832, 0, -196569, 0, -82764, 0, 707454, 0, 18392, 0, 92016, 0, 493668, 0, -559450, 0, 416856, 0, -16092, 0, 320760, 0, -361152, 0, -724032, 0, 7106, 0, 270864, 0, -530442, 0, 56168, 0, -261744]
[0, 0, 1, 8, 32, 96, 244, 528, 1024, 1856, 3126, 5016, 7808, 11616, 16808, 23856, 32768, 44352, 59293, 77352, 100032, 128128, 161052, 201264, 249856, 305280, 371294, 450128, 537856, 640992, 762744, 894528, 1048576, 1228224, 1419858, 1642080, 1897376, 2167008, 2476100, 2830960, 3201024, 3619968, 4101152, 4594392, 5153664, 5792352, 6436344, 7167072, 7995392, 8828160, 9768751, 10826640, 11881408, 13068000, 14408200, 15731856, 17211392, 18880576, 20511150, 22341624, 24407808, 26394720, 28629152, 31143376, 33554432, 36271488, 39296688, 42190728, 45435456, 49075584, 52541808, 56383632, 60716032, 64781376, 69343958, 74486648, 79235200, 84594048, 90595736, 96160416, 102432768, 109413056, 115856202, 123092904, 131236864, 138701376, 147008444, 156397296, 164917248, 174500928, 185349918, 195021024, 205963008, 218298880, 229345008, 241882608, 255852544, 268358208, 282492057, 298415928, 312600032, 328440288, 346445352, 362274000, 380205056, 400629504, 418195494, 438293592, 461062400, 480816864, 503448552, 528747568, 550764544, 575761920, 604168400, 628757280, 656356800, 687971680, 714924300, 745782048, 781049856, 810545472, 844596302, 883410000, 916132864, 953985216, 996596744, 1032438528, 1073741824, 1120934848, 1160665044, 1205605896, 1257494016, 1300573824, 1350125108, 1407494112, 1453934592, 1508188800, 1570467936, 1621531032, 1681337856, 1748755200, 1804229352, 1868683344, 1942913024, 2003683968, 2073071594, 2153998536, 2219006656, 2294986848, 2383575244, 2453207856, 2535526400, 2630865600, 2706962016, 2796703104, 2899063552, 2980902240, 3077056400, 3188747952, 3277848576, 3380678400, 3501192601, 3595741512, 3707398464, 3838806144, 3939040644, 4059139920, 4199579648, 4308095616, 4438476108, 4587983752, 4704270208, 4842599520, 5004720600, 5131035888, 5277351936, 5451294912, 5584059450, 5742671976, 5931197376, 6070775136, 6240709552, 6440033776, 6590816256, 6774038400, 6985513088, 7145957808, 7339040256, 7567918336, 7740288600, 7943613312, 8187281408, 8368286784, 8587340258, 8850062496, 9039745824, 9272181600, 9549256236, 9752485776, 10003201024, 10294712128, 10510100502]
[0, 0, 0, 1, 0, 12, 0, 66, 0, 232, 0, 627, 0, 1452, 0, 2982, 0, 5544, 0, 9669, 0, 16016, 0, 25158, 0, 38160, 0, 56266, 0, 80124, 0, 111816, 0, 153528, 0, 205260, 0, 270876, 0, 353870, 0, 452496, 0, 574299, 0, 724044, 0, 895884, 0, 1103520, 0, 1353330, 0, 1633500, 0, 1966482, 0, 2360072, 0, 2792703, 0, 3299340, 0, 3892922, 0, 4533936, 0, 5273841, 0, 6134448, 0, 7047954, 0, 8097672, 0, 9310831, 0, 10574256, 0, 12020052, 0, 13676632, 0, 15386613, 0, 17337672, 0, 19549662, 0, 21812616, 0, 24377628, 0, 27287360, 0, 30235326, 0, 33544776, 0, 37301991, 0, 41055036, 0, 45284250, 0, 50078688, 0, 54786699, 0, 60102108, 0, 66093446, 0, 71970240, 0, 78594660, 0, 85996460, 0, 93222756, 0, 101318184, 0, 110426250, 0, 119248152, 0, 129054816, 0, 140116856, 0, 150700737, 0, 162571728, 0, 175936764, 0, 188523600, 0, 202691379, 0, 218594400, 0, 233585418, 0, 250460496, 0, 269249817, 0, 286873356, 0, 306650982, 0, 328858200, 0, 349587888, 0, 372612780, 0, 398593494, 0, 422584800, 0, 449467689, 0, 479850768, 0, 507392490, 0, 538511952, 0, 573497969, 0, 605324940, 0, 641379486, 0, 681411864, 0, 717833997, 0, 758846892, 0, 805004222, 0, 846754800, 0, 893244726, 0, 945989792, 0, 992951664, 0, 1046035848, 0, 1106257812, 0, 1159022700, 0, 1219060722, 0, 1286839016, 0, 1346684988]
[1, -504, -16632, -122976, -532728, -1575504, -4058208, -8471232, -17047800, -29883672, -51991632, -81170208, -129985632, -187132176, -279550656, -384422976, -545530104, -715608432, -986161176, -1247954400, -1665307728, -2066980608, -2678616864, -3243917376, -4159663200, -4923450504, -6175361808, -7261732800, -8954092224, -10337619600, -12685958208, -14429092608, -17456963832, -19805530752, -23615078256, -26481071232, -31587041304, -34949354832, -41182495200, -45660250944, -53291422800, -58391525808, -68210360064, -74092255776, -85796909856, -93416358672, -107049273408, -115589884032, -133109345376, -142375996728, -162473866632, -174608457408, -197798710032, -210770528976, -239637182400, -253738070208, -286539422400, -304500873600, -341141446800, -360321847200, -406335085632, -425676536208, -476160056064, -502284758976, -558622843128, -584975182176, -653582514816, -680463054432, -756398112624, -791515839744, -873875350656, -909331593408, -1010815205400, -1044828083376, -1153328709456, -1201321922976, -1319087800800, -1364308856064, -1506788281152, -1550836425600, -1705327105104, -1764601070904, -1926920351664, -1985276484576, -2184798502656, -2236991958432, -2445044440608, -2522379182400, -2745582285600, -2814365962800, -3082739836176, -3145317614208, -3428820666432, -3520698596352, -3814466173056, -3901105454400, -4259499175008, -4328019490032, -4698407892024, -4812825142944, -5204087182728, -5297090653008, -5762079094464, -5842741334976, -6329745853200, -6461381380608, -6955427456208, -7068860723232, -7675651569600, -7754664733200, -8373356316864, -8527642579008, -9169269988032, -9285873304176, -10048528828800, -10140485717376, -10926863917200, -11095628111568, -11890620957600, -12027946525056, -13003107163200, -13072543169112, -14047325694864, -14247532297152, -15251550886656, -15385782825504, -16575397046208, -16651338181632, -17875930980600, -18078510409344, -19304181011808, -19444062784608, -20934446004864, -20975617555200, -22455280796256, -22700176732800, -24205455212400, -24323909126832, -26120022711552, -26151977728800, -27990492292224, -28203931703808, -30007942582464, -30138011209152, -32346116456472, -32315398869600, -34479326751408, -34739743201632, -36941468057424, -37013646978000, -39643623458208, -39565373779008, -42212057580000, -42430570758576, -45022192250112, -45105343492608, -48262885247808, -48076052249232, -51177602044800, -51428009070144, -54570468938832, -54523763255808, -58231835339832, -57992062990176, -61719842779056, -61912089130752, -65514123991008, -65465560746432, -69915619065600, -69480867024072, -73820734628256, -73994960239200, -78315514355232, -78101801615376, -83238513019200, -82753356071232, -87858714309408, -87918530716800, -92874076772400, -92618062437600, -98741091116304, -97909179430608, -103795481268864, -103865074834752, -109725505243200, -109251683204832, -116183053679616, -115250169190464, -122178507421824, -122055204902400, -128736479995200, -128114230583808, -136303973723232, -134963732833776, -142824643171056, -142733944450944, -150491428541496, -149541477502032, -158823229717152, -157288118904000, -166535713297800]

2017年5月7日日曜日

170507

Ruby


Number of representations of 10^n as sum of k triangular numbers

k が6, 8 のときに規則性がある。

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

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

m = 3
n = 10 ** m
(1..100).each{|i|
  a = A(i, n)
  p [i, (0..m).map{|j| a[10 ** j]}]
}

出力結果
[1, [1, 1, 0, 0]]
[2, [2, 2, 2, 2]]
[3, [3, 9, 30, 78]]
[4, [4, 32, 272, 2880]]
[5, [5, 90, 2600, 83880]]
[6, [6, 231, 20400, 2003001]]
[7, [7, 567, 147511, 46076450]]
[8, [8, 1332, 1030302, 1007141184]]
[9, [9, 2979, 6750900, 20612437776]]
[10, [10, 6341, 41591741, 397737367822]]
[11, [11, 12892, 242585717, 7258733595410]]
[12, [12, 25158, 1346684988, 125940317363157]]
[13, [13, 47346, 7145580338, 2086440134887550]]
[14, [14, 86282, 36383662861, 33132657211536701]]
[15, [15, 152778, 178404108813, 506119212593601678]]
[16, [16, 263584, 845008027992, 7459911528848051232]]
[17, [17, 444125, 3875970033454, 106366350249753658347]]
[18, [18, 732276, 17253879294006, 1470241717851559433265]]
[19, [19, 1183491, 74674844682795, 19737083066556180555180]]
[20, [20, 1877676, 314733772865202, 257743659543879717605382]]
[21, [21, 2928282, 1293659282055567, 3278919983646414241580145]]
[22, [22, 4494193, 5192410364798734, 40689036635374198080187200]]
[23, [23, 6795097, 20375281865527130, 493107574525089987331703278]]
[24, [24, 10131156, 78251281586187426, 5842412953614743357001098430]]
[25, [25, 14907935, 294415231452853070, 67741972518495737868468490110]]
[26, [26, 21667711, 1086181579309557575, 769363768363979087935689960491]]
[27, [27, 31128462, 3932591936984003709, 8565955270277141782841472118026]]
[28, [28, 44232034, 13983719082095273847, 93567288088577633432099207461496]]
[29, [29, 62203202, 48869975111328487816, 1003426663894029699966686656123132]]
[30, [30, 86621580, 167966746125385693221, 10571768629387274811665279839656675]]
[31, [31, 119508596, 568110213674533249213, 109490724124333944968633230250789316]]
[32, [32, 163432032, 1891988536729339032080, 1115383211760636782200793944815208692]]
[33, [33, 221630937, 6207453228350773887246, 11182047224644846290030035287748405496]]
[34, [34, 298164054, 20074065058884924294308, 110379330479443501083252040822091785132]]
[35, [35, 398085261, 64016029204520969002903, 1073319265602861048417006103117247591817]]
[36, [36, 527649912, 201403126399797207319455, 10285804575120179718911699867862910259766]]
[37, [37, 694556378, 625387571704231391408568, 97184762379609449976524774000135058811643]]
[38, [38, 908227531, 1917384504114038712429564, 905692791658237702524015191542400232300361]]
[39, [39, 1180137387, 5806416282772424936449833, 8328166969507939881527435674941240159366309]]
[40, [40, 1524188628, 17373991390513793373870792, 75588911774854943077103327159615202817028772]]
[41, [41, 1957147259, 51384139718062181645309168, 677412775876584392000497062810168481449715214]]
[42, [42, 2499141225, 150257061374739621991442040, 5996176890580778188141465137865434497002107219]]
[43, [43, 3174230416, 434558731461306656908319553, 52438904357215231031836671672679724885535645326]]
[44, [44, 4011056126, 1243354685616868083201616586, 453228234079329840298439460451077062095062425595]]
[45, [45, 5043578706, 3520415084517199345693237686, 3872439774194071291996868210809075098235371690996]]
[46, [46, 6311912862, 9866403039568399741129898298, 32716850282609223308302899364491285989634727446074]]
[47, [47, 7863270798, 27377811890098209253302990248, 273392774614676131191373096265691357737735250293030]]
[48, [48, 9753024192, 75234583553344059445295491860, 2260144347128520486967951684848179161216273821383334]]
[49, [49, 12045896821, 204792831768752932701195373062, 18489251254356858357656266307573641347825603283845857]]
[50, [50, 14817300520, 552313660584536111039091447827, 149703755958721844885004574115749734947557715569923275]]
[51, [51, 18154828071, 1476121338171422203406396385042, 1199965027569773574285474618847562111902378409413216239]]
[52, [52, 22159917572, 3910311168087104865707576620953, 9523917058122963247757191413928647798073666990866027565]]
[53, [53, 26949703834, 10269229046962650709324610472632, 74861559955105313394526460151288121412061943720080400585]]
[54, [54, 32659073397, 26741306953324513170973186679934, 582881468798447636141086229312530682942482686654280356123]]
[55, [55, 39442940845, 69059527431549373545582774323085, 4496333312116471695938682709590611284833198031249873762960]]
[56, [56, 47478765236, 176903230326576585020279081565070, 34369203758649563079215339334151725489171819762552655826555]]
[57, [57, 56969326647, 449563828456858107756391227471585, 260367191376079129172930958732104331105852756789322707399849]]
[58, [58, 68145784067, 1133600517649856146314420556168814, 1955146663996772955891509922824076231481504121394631479180968]]
[59, [59, 81271037154, 2836670924990303463682556984227197, 14555151412787470360435265417879386739593496900453072700239598]]
[60, [60, 96643415706, 7045356181837789546441335728620089, 107439525165909360329875870430990868820225948844037761574343956]]
[61, [61, 114600722082, 17370192446168069511184604391161256, 786474844458523986016638719951294543607178075749351774966162642]]
[62, [62, 135524653248, 42518161576201876245939760542993800, 5710055345975768956250358236796905237385631408326373491126507667]]
[63, [63, 159845630616, 103340600818653272598830031775774074, 41123477900736691449399374958920369390688767967849562762473876441]]
[64, [64, 188048067392, 249431165661412219474572136066897888, 293826384763519601255581141064012323205810133214142300147506796096]]
[65, [65, 220676104753, 597954907105160383047774668717763157, 2083045510111285315679441348576237084499343480755650816347393352446]]
[66, [66, 258339849834, 1423892346685780912063844602192014990, 14654384309170877898248097288688784990844510840153975462389983548120]]
[67, [67, 301722150225, 3368435580800175876977628166747381080, 102317384245768352281829452133694546489778068414176597888715675233672]]
[68, [68, 351585941456, 7917197742543990620104710017908320632, 709079477775636804785498424780123199317159265905437976314981750709861]]
[69, [69, 408782205786, 18490777477145605916232765302112842505, 4878127297815823739800542338919390105543601803053894787691417482165243]]
[70, [70, 474258582511, 42916680537800752287796082155968232669, 33317446949710952723514353547487955408398447989475830679889715107980059]]
[71, [71, 549068671967, 98998771169535594723882699195022964884, 225941984169921604525554918076851548688038011721442023869111577960928101]]
[72, [72, 634382077428, 226991896128039177052165518506440283304, 1521506258221441317745293648234617374041052446419454692692053290995595085]]
[73, [73, 731495231187, 517381201077910681736323071372205585572, 10175266820023070939897341529646024803077255692152224202870159036843871282]]
[74, [74, 841843053261, 1172390644366726875615775142774533107096, 67585820720007784847105363244947977089514618680757806240396624569096431479]]
[75, [75, 967011493380, 2641410829260121376663522826559131557541, 445907113171214114050457879006541480708635207512557190029378693170139367812]]
[76, [76, 1108751009206, 5917535383978282180602521992759372500931, 2922485838041651605245603596097947797733585343026418021409855549086747757504]]
[77, [77, 1268991036082, 13183338164091513672724841559059504721011, 19029121938192456659537332657312480784110581423180538480794083153946453159127]]
[78, [78, 1449855506034, 29209682281875384750830175982779105251022, 123106641779305872473880489941540146739475162629762820230499882304217613749145]]
[79, [79, 1653679476242, 64369701011602311980184573991995931271583, 791366596158525779598259320528108715110756151647674476538703507720960429133632]]
[80, [80, 1883026929760, 141099256576030704070452579260251052953372, 5055260988823061458474374300611370693663630638444610465164781012551495291996692]]
[81, [81, 2140709813901, 307674127883196148990297083958963475723277, 32093295374737135379856775155629297736381359124937683801005299910055345018708492]]
[82, [82, 2429808384412, 667442436044890490755738899308422593832971, 202499639625533040043862312173653863502153494843277443626218398801576505772271776]]
[83, [83, 2753692926347, 1440542108546769293032907917209159797387780, 1270009308541837399820586566473246614653147556197517100387053596983260830182227339]]
[84, [84, 3116046925404, 3093565453666685348533118531541298666108788, 7917625250597296899031215590507160284432996842056474526453884838170737562119747880]]
[85, [85, 3520891766426, 6610662572605959975203415436335628488892744, 49070475025400814354904156581496972387248239045050335343795888482124480410515471627]]
[86, [86, 3972613038777, 14057670597620701902012153644347705743370378, 302352801691344072512388152290387488916594816234072869711633464348193720474773774336]]
[87, [87, 4475988531393, 29750485606338854236282345993688415858263124, 1852279619772792075507504263009675700112006825174951062985331023892196550980510263097]]
[88, [88, 5036218003476, 62663695949551090834211467484425603953035016, 11283078479422067402282657089499559840483019079593902614140874845188756969957600529212]]
[89, [89, 5658954820047, 131373403511292714930456445495802120121437802, 68344912179794902439888559139444973662652493791348138073450195733710488707812312430450]]
[90, [90, 6350339544903, 274154881862118437062782426011794489047911556, 411690307375257924204783670075589754185356145383095915851179270197774795538585222655541]]
[91, [91, 7117035586934, 569519446547134931322063413270657432919655503, 2466315773095977065933386196484387620145600233152830434294712624674945427596363105142788]]
[92, [92, 7966266999250, 1177799903932894142499310753444085592327078661, 14694925954812773672812620381862645244980264410155969448081421406973530550211327324073958]]
[93, [93, 8905858534146, 2424993623998760682929042158388991640300487364, 87086995867135984830404267310685378355125983823696931051380172817468674483310994141551174]]
[94, [94, 9944278060596, 4971082727338014844510371575618155267946087589, 513372177987547476500845005972405820503712422853250255014942546681847202940966607922719730]]
[95, [95, 11090681454716, 10146524327162079495407983845731760637584712353, 3010438971112358945295073809723436351792056486474582248791503467116232443482852751748835848]]
[96, [96, 12354960077472, 20622134365328614945750886527321115137296110016, 17561865001317034355991431401049730760715063400251028202349540844598805800490204733118543152]]
[97, [97, 13747790957833, 41737216659047810127266395921039168566582703253, 101924609165750298948632610396123288952244250541341277739523961126769083841603631974407612562]]
[98, [98, 15280689803582, 84122073857452440484902427497347733040436549884, 588543933502356215777828991621313302904006531193599219974069043224412135179947953835613566588]]
[99, [99, 16966066966101, 168855666620026104198829795805684560415730663729, 3381375802514361493989633146565427878933287283293392633511053125712310039435758471772631927276]]
[100, [100, 18817286489640, 337569020292608703618931591810026288085927961928, 19330609417148743978329847749614366418319592600892466793661057390223423277408685814610773864036]]