2019年7月13日土曜日

190713(2)

Sage


公開鍵作成(ビットコイン)(1)

https://qiita.com/rintaromasuda/items/2e54f35683facb519446
の記事を見ながら、公開鍵を計算してみた。

sage: p=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
sage: p
115792089237316195423570985008687907853269984665640564039457584007908834671663
sage: E=EllipticCurve(GF(p), [0, 7])
sage: Gx=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
sage: Gy=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
sage: G=E([Gx, Gy])
sage: N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
sage: N
115792089237316195423570985008687907852837564279074904382605163141518161494337
sage: N*G
(0 : 1 : 0)
sage: 2017101920171019*G
(36572950727085182085382801403406684418997739286809164939833038507156062366242 : 43641162618061335383666517243600726585787626462467298998793806674351551668099 : 1)
sage: for i in [1..50]:
....:     print [i, i*G]
....:
[1, (55066263022277343669578718895168534326250603453777594175500187360389116729240 : 32670510020758816978083085130507043184471273380659243275938904335757337482424 : 1)]
[2, (89565891926547004231252920425935692360644145829622209833684329913297188986597 : 12158399299693830322967808612713398636155367887041628176798871954788371653930 : 1)]
[3, (112711660439710606056748659173929673102114977341539408544630613555209775888121 : 25583027980570883691656905877401976406448868254816295069919888960541586679410 : 1)]
[4, (103388573995635080359749164254216598308788835304023601477803095234286494993683 : 37057141145242123013015316630864329550140216928701153669873286428255828810018 : 1)]
[5, (21505829891763648114329055987619236494102133314575206970830385799158076338148 : 98003708678762621233683240503080860129026887322874138805529884920309963580118 : 1)]
[6, (115780575977492633039504758427830329241728645270042306223540962614150928364886 : 78735063515800386211891312544505775871260717697865196436804966483607426560663 : 1)]
[7, (41948375291644419605210209193538855353224492619856392092318293986323063962044 : 48361766907851246668144012348516735800090617714386977531302791340517493990618 : 1)]
[8, (21262057306151627953595685090280431278183829487175876377991189246716355947009 : 41749993296225487051377864631615517161996906063147759678534462689479575333124 : 1)]
[9, (78173298682877769088723994436027545680738210601369041078747105985693655485630 : 92362876758821804597230797234617159328445543067760556585160674174871431781431 : 1)]
[10, (72488970228380509287422715226575535698893157273063074627791787432852706183111 : 62070622898698443831883535403436258712770888294397026493185421712108624767191 : 1)]
[11, (53957576663012291606402345341061437133522758407718089353314528343643821967563 : 98386217607324929854432842186271083758341411730506808463586570492533445740059 : 1)]
[12, (94111259592240215275188773285036844871058226277992966241101117022315524122714 : 76870767327212528811304566602812752860184934880685532702451763239157141742375 : 1)]
[13, (109699032664856045668214896063362497021339186688470416858630178803463338613416 : 4835088675770141268294878046681321747490758260515711581034896622314066275713 : 1)]
[14, (33301309993451753050311554695703528430361259803437469669590207169100761277412 : 91711666877231500617203373035680263572492971120307578300405368749466283229019 : 1)]
[15, (97505755694356382817881959832717013755620551362654128955029190924747025549326 : 39856815248295663243990443767776362321337592747889787217974905533720651000664 : 1)]
[16, (104059883622109321374094289636044428849728529177856482232626205340719788190730 : 112122903140080327253741791678230372394936108416576609264408917599318947489825 : 1)]
[17, (100862081773581120499222301212791081193994281440454033593790618293887747050036 : 29883864782608871580821802176208615141762369223249393426421538275393411672951 : 1)]
[18, (38901272619685732968285380035171577070479117282397203902622597987558769928140 : 87393127487643849618870152207476122589010570440825041333620493866032028851544 : 1)]
[19, (19588375357829479297593261744848590434972900972071148260168833594658324503404 : 60568592333449737531184420002591396163903580402725242236305558432410218044282 : 1)]
[20, (34773495056115281091786765947597603724784643419904767525769502836017890139287 : 8470533044743364938367028725608288731153024648869546164814808839694950063162 : 1)]
[21, (24049875635381557237058143631624836741422505207761609709712554171343558302165 : 22669890352939653242079781319904043788036611953081321775127194249638113810828 : 1)]
[22, (29908081367423272746086114569421970207888665320998202915346633185016778189308 : 19705544727792599099830884487151299095417296550955739824847212341657057716097 : 1)]
[23, (21545045623056848826483343441081830815719530893582365358444562918095175994431 : 1296978981679745807043951140304019026881137717020402959957988455650813508967 : 1)]
[24, (115090238283566018960826468250608273126387416636633736439689841211757211870926 : 47185183227829754668635270747409548752084785367264057948864458978444304762303 : 1)]
[25, (66165162229742397718677620062386824252848999675912518712054484685772795754260 : 52018513869565587577673992057861898728543589604141463438466108080111932355586 : 1)]
[26, (46375854666189782329411331467438732923135312366454677774518044107217916677258 : 28872066516664221627799718496556756366588329842312456769228220433104069963108 : 1)]
[27, (99023490166718961467148584643029653267652245207820783364668071358307234645801 : 75362751621984629832705305750958516370071248757681753180287377123479199292501 : 1)]
[28, (38862517885349586199469132990077977525522399615397327331631717567532241615208 : 56796032415390392137148811074183321813766115156763923072036584114852967736264 : 1)]
[29, (88789495143442116025801984763830218317601484092281216301053684219001740388315 : 14971629676138079947354454610178388572791590863859394042797260533911845233794 : 1)]
[30, (49378132684229722274313556995573891527709373183446262831552359577455015004672 : 78123232289538034746933569305416412888858560602643272431489024958214987548923 : 1)]
[31, (48009403158434809478298710137233764200988036438868259456275038304221065242292 : 101379581344212856035375194820281365028426536613141130008386086305632315345538 : 1)]
[32, (95440839670107969455973995843666399663662641812074432045896568980475242364517 : 67400892360194400039319989411395972789004161889863182881857158544061243615929 : 1)]
[33, (10219441022991940610048493520113102240595005085840974180672104038719657072293 : 84023467742492607926612431243360899514584580916128500081114886405247779677078 : 1)]
[34, (12619776604307790469550660645393525758448419897555601226868753617320214526993 : 86272100689574882152938150858861318820088413186167100601966648021512258522745 : 1)]
[35, (43584328072464330665967763306297595761508151294385275883849271528835646125177 : 1171731419844835688478928898148416329180259014376715189840427072871218252873 : 1)]
[36, (101419098787597942766661010883841213675986572091206578880178916574081925093625 : 53748097764673089702489673031527129553025318704228137363806494938199580582828 : 1)]
[37, (44696466249196887777481833878429299174322536392992392205634510941844339159869 : 58341336599715296255997469230977942456412351469447624645098110293822755987119 : 1)]
[38, (82592391416753704330480457266605199466589998476548643675167586509583694299127 : 96352244311289141626709213538144106127822954871227876742730890119647945927428 : 1)]
[39, (58245954963044076335222193032419637688317373475605757277584156718458924469103 : 12764036181290433088658499435961200322530176588733628912045896254235383420282 : 1)]
[40, (65977930378964483966842705159007630837451149704819265634327747226133817150731 : 106574384264472205627876631445935175739834375489227447805380155393950263965849 : 1)]
[41, (55442706224332212356956949983947160877073898960448236395042968736464621521147 : 5905242281663190858892708265754696019921609450612128937011632221309721495543 : 1)]
[42, (115136800820456833737994126771386015026287095034625623644186278108926690779567 : 3479535755779840016334846590594739014278212596066547564422106861430200972724 : 1)]
[43, (96414945312501980282409358461754977502747357521062737878469375231739675541449 : 108016644921439980219149763541432916357155273945921323318636524851968650287411 : 1)]
[44, (42072772011086351294328511389423850314698152445154323541536957340534349973349 : 99133657745585934968186133288050721248258413615930917407282740640761199917928 : 1)]
[45, (2069755349039566255304036353648839232649715781170511813011535420394543798627 : 53173698995439924366951845531266805314230463309822098990695656330917108292762 : 1)]
[46, (112485767891133126222498548010271946438760990210983300801299715976951536768791 : 85739109496996784368776054024999276184984966609644199395125789597014054674947 : 1)]
[47, (54253141229701892740678441538472478126466317116121420289154985997987923385716 : 67647191893224491627918802490479062705030965032432110320079555712709270724822 : 1)]
[48, (50111670963408569345385204828013406423962206186815367070190059614189255189955 : 96344650049071302355595011727277439354119658646232861677212062449792674989672 : 1)]
[49, (109846273198995465046214558810696509369395695668678477567979041624391316796720 : 101711840700253487202274292900077312932162220876743713596510869779955653950519 : 1)]
[50, (18752372355191540835222161239240920883340654532661984440989362140194381601434 : 88478450163343634110113046083156231725329016889379853417393465962619872936244 : 1)]

190713

Sage


楕円曲線上の演算

E : y^2 = x^3 + x + 1 (mod 23)
E上に点P (0, 1)がある。
P, 2*P, 3*P, ... を求めてみた。 

sage: E=EllipticCurve(GF(23), [1, 1])
sage: P=E([0, 1])
sage: for i in [1..56]:
....:     print [i, i*P]
....:
[1, (0 : 1 : 1)]
[2, (6 : 19 : 1)]
[3, (3 : 13 : 1)]
[4, (13 : 16 : 1)]
[5, (18 : 3 : 1)]
[6, (7 : 11 : 1)]
[7, (11 : 3 : 1)]
[8, (5 : 19 : 1)]
[9, (19 : 18 : 1)]
[10, (12 : 4 : 1)]
[11, (1 : 16 : 1)]
[12, (17 : 20 : 1)]
[13, (9 : 16 : 1)]
[14, (4 : 0 : 1)]
[15, (9 : 7 : 1)]
[16, (17 : 3 : 1)]
[17, (1 : 7 : 1)]
[18, (12 : 19 : 1)]
[19, (19 : 5 : 1)]
[20, (5 : 4 : 1)]
[21, (11 : 20 : 1)]
[22, (7 : 12 : 1)]
[23, (18 : 20 : 1)]
[24, (13 : 7 : 1)]
[25, (3 : 10 : 1)]
[26, (6 : 4 : 1)]
[27, (0 : 22 : 1)]
[28, (0 : 1 : 0)]
[29, (0 : 1 : 1)]
[30, (6 : 19 : 1)]
[31, (3 : 13 : 1)]
[32, (13 : 16 : 1)]
[33, (18 : 3 : 1)]
[34, (7 : 11 : 1)]
[35, (11 : 3 : 1)]
[36, (5 : 19 : 1)]
[37, (19 : 18 : 1)]
[38, (12 : 4 : 1)]
[39, (1 : 16 : 1)]
[40, (17 : 20 : 1)]
[41, (9 : 16 : 1)]
[42, (4 : 0 : 1)]
[43, (9 : 7 : 1)]
[44, (17 : 3 : 1)]
[45, (1 : 7 : 1)]
[46, (12 : 19 : 1)]
[47, (19 : 5 : 1)]
[48, (5 : 4 : 1)]
[49, (11 : 20 : 1)]
[50, (7 : 12 : 1)]
[51, (18 : 20 : 1)]
[52, (13 : 7 : 1)]
[53, (3 : 10 : 1)]
[54, (6 : 4 : 1)]
[55, (0 : 22 : 1)]
[56, (0 : 1 : 0)]

2019年7月7日日曜日

190707

Ruby


A013587

Enumerative Geometry and String Theory に公式が載っていたので求めてみた。 

def ncr(n, r)
  return 1 if r == 0
  (n - r + 1..n).inject(:*) / (1..r).inject(:*)
end

def A013587(n)
  ary = [0, 1]
  (2..n).each{|i|
    s = 0
    (1..i - 1).each{|j|
      k = i - j
      s += ary[j] * ary[k] * j ** 2 * k * (k * ncr(3 * i - 4, 3 * j - 2) - j * ncr(3 * i - 4, 3 * j - 1))
    }
    ary << s
  }
  ary[1..-1]
end

p A013587(14)

出力結果
[1, 1, 12, 620, 87304, 26312976, 14616808192, 13525751027392, 19385778269260800, 40739017561997799680, 120278021410937387514880, 482113680618029292368686080, 2551154673732472157928033617920, 17410560213476464590484763013222400]

2019年6月29日土曜日

190629

Ruby


sigma_{n-1}(n)

紛らわしいものを出力してみた。 

def s(n)
  s = 0
  (1..n).each{|i| s += i ** (i - 1) if n % i == 0}
  s
end

def t(n)
  s = 0
  (1..n).each{|i| s += i ** (n - 1) if n % i == 0}
  s
end

def u(n)
  s = 0
  (1..n).each{|i| s += n ** (i - 1) if n % i == 0}
  s
end

n = 20
# A262843
p (1..n).map{|i| s(i)}
# A082245
p (1..n).map{|i| t(i)}
# A308814
p (1..n).map{|i| u(i)}

出力結果
[1, 3, 10, 67, 626, 7788, 117650, 2097219, 43046731, 1000000628, 25937424602, 743008378540, 23298085122482, 793714773371796, 29192926025391260, 1152921504608944195, 48661191875666868482, 2185911559738739586477, 104127350297911241532842, 5242880000000001000000692]
[1, 3, 10, 73, 626, 8052, 117650, 2113665, 43053283, 1001953638, 25937424602, 743375541244, 23298085122482, 793811662272744, 29192932133689220, 1152956690052710401, 48661191875666868482, 2185928253847184914509, 104127350297911241532842, 5242890000019348364759358]
[1, 3, 10, 69, 626, 7819, 117650, 2097673, 43046803, 1000010011, 25937424602, 743008621405, 23298085122482, 793714780783695, 29192926025441476, 1152921504875286545, 48661191875666868482, 2185911559749718382455, 104127350297911241532842, 5242880000000512000168021]

2019年5月19日日曜日

190519

Ruby


F_2(q) and F_3(q)

B. Mazur, Perturbations, deformations and variations (and "near-misses") in geometry, physics, and number theory
に載っているF_2 およびF_3 を計算してみた。 

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

# 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 A(a, b, c, s, t, u, n)
  mul(mul(power(a, s, n), power(b, t, n), n), power(c, u, n), n)
end

def A126858(a, b, c, n)
  a1 = A(a, b, c, 3, 0, 0, n)
  a2 = A(a, b, c, 1, 1, 0, n)
  a3 = A(a, b, c, 0, 0, 1, n)
  (0..n).map{|i| (5 * a1[i] - 3 * a2[i] - 2 * a3[i]) / 51840}
end

def F_3(a, b, c, n)
  a1 = A(a, b, c, 4, 1, 0, n)
  a2 = A(a, b, c, 6, 0, 0, n)
  a3 = A(a, b, c, 2, 2, 0, n)
  a4 = A(a, b, c, 0, 3, 0, n)
  a5 = A(a, b, c, 3, 0, 1, n)
  a6 = A(a, b, c, 1, 1, 1, n)
  a7 = A(a, b, c, 0, 0, 2, n)
  (0..n).map{|i| (15 * a1[i] - 6 * a2[i] - 12 * a3[i] + 7 * a4[i] + 4 * a5[i] - 12 * a6[i] + 4 * a7[i]) / 35831808r}
end

n = 100
a = E_2k(1, n)
b = E_2k(2, n)
c = E_2k(3, n)
p A126858(a, b, c, n)
p F_3(a, b, c, n)

出力結果
[0, 0, 1, 8, 30, 80, 180, 336, 620, 960, 1590, 2200, 3416, 4368, 6440, 7920, 11160, 13056, 18333, 20520, 27860, 31360, 41052, 44528, 59760, 62400, 80990, 87120, 109872, 113680, 147960, 148800, 188976, 196416, 240210, 243040, 311910, 303696, 376580, 385840, 467400, 459200, 578592, 556248, 685960, 689040, 814200, 795616, 1000928, 940800, 1142575, 1138320, 1346436, 1289808, 1597320, 1502160, 1815520, 1781440, 2071470, 1984760, 2474640, 2269200, 2709152, 2665488, 3108960, 2941120, 3587760, 3307656, 3968412, 3841920, 4433520, 4174800, 5145660, 4667328, 5518550, 5396600, 6208440, 5785472, 7030296, 6408480, 7665680, 7318080, 8336202, 7813288, 9580480, 8641440, 10093820, 9750960, 11196240, 10338240, 12560670, 11313120, 13383056, 12745216, 14427120, 13505200, 16390080, 14601216, 17071257, 16382520, 18802050]
[(0/1), (0/1), (1/12), (20/3), (102/1), (2288/3), (3773/1), (14232/1), (133616/3), (119904/1), (584517/2), (1927900/3), (4013432/3), (2569296/1), (14394518/3), (8365192/1), (14426496/1), (23381600/1), (151885575/4), (58125708/1), (269849564/3), (395149888/3), (195967551/1), (828880856/3), (398774464/1), (544543680/1), (4586626939/6), (1018905048/1), (1396485648/1), (5453010736/3), (2448671142/1), (3121442400/1), (4128375808/1), (5187906080/1), (13495484403/2), (25020191728/3), (10739989086/1), (13073496336/1), (49818496739/3), (60139107448/3), (25150090080/1), (89915259200/3), (37377803512/1), (44031127764/1), (163015794472/3), (63689848272/1), (77792286390/1), (270800856112/3), (329864101376/3), (126331201920/1), (1829900154535/12), (174829519992/1), (209303207172/1), (237830107920/1), (284352406578/1), (320567905752/1), (1141395757696/3), (1285519158688/3), (1009346752689/2), (1692885599372/3), (665140467376/1), (738055938000/1), (2591163670808/3), (959464286328/1), (1115821891584/1), (3692188459456/3), (1432795280676/1), (1570557014940/1), (1818030330092/1), (1995407460928/1), (2295038099676/1), (2504195399000/1), (2888008439184/1), (3131191652832/1), (21533911590655/6), (11708697709580/3), (4449903597384/1), (14425877365952/3), (5497041209758/1), (5909603218032/1), (20169906407168/3), (7246380240288/1), (16391092220607/2), (26370350052964/3), (29945483611456/3), (10645119258336/1), (36058977478421/3), (12870138877544/1), (14466994073664/1), (15402512851936/1), (34752009094569/2), (18413605256592/1), (62040662272400/3), (65985397699840/3), (24568961270988/1), (78053912323960/3), (29202477969408/1), (30753913227744/1), (137364461667811/4), (36345626985348/1), (40420330609290/1)]

2019年4月20日土曜日

190420

Ruby


Expansion of g.f. 1/((1-x)^k-x^k)

A306915 に書いたとおり第n 項は
Sum_{j=0..floor(n/k)} binomial(n+k-1,k*j+k-1)
で表される。

def ncr(n, r)
  return 1 if r == 0
  (n - r + 1..n).inject(:*) / (1..r).inject(:*)
end

def A(k, n)
  (0..n / k).inject(0){|s, i| s + ncr(n + k - 1, k * i + k - 1)}
end

n = 50
(1..n).each{|i| p [i, (0..10).map{|j| A(i, j)}]}

出力結果
[1, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]]
[2, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]]
[3, [1, 3, 6, 11, 21, 42, 85, 171, 342, 683, 1365]]
[4, [1, 4, 10, 20, 36, 64, 120, 240, 496, 1024, 2080]]
[5, [1, 5, 15, 35, 70, 127, 220, 385, 715, 1430, 3004]]
[6, [1, 6, 21, 56, 126, 252, 463, 804, 1365, 2366, 4368]]
[7, [1, 7, 28, 84, 210, 462, 924, 1717, 3017, 5110, 8568]]
[8, [1, 8, 36, 120, 330, 792, 1716, 3432, 6436, 11456, 19584]]
[9, [1, 9, 45, 165, 495, 1287, 3003, 6435, 12870, 24311, 43776]]
[10, [1, 10, 55, 220, 715, 2002, 5005, 11440, 24310, 48620, 92379]]
[11, [1, 11, 66, 286, 1001, 3003, 8008, 19448, 43758, 92378, 184756]]
[12, [1, 12, 78, 364, 1365, 4368, 12376, 31824, 75582, 167960, 352716]]
[13, [1, 13, 91, 455, 1820, 6188, 18564, 50388, 125970, 293930, 646646]]
[14, [1, 14, 105, 560, 2380, 8568, 27132, 77520, 203490, 497420, 1144066]]
[15, [1, 15, 120, 680, 3060, 11628, 38760, 116280, 319770, 817190, 1961256]]
[16, [1, 16, 136, 816, 3876, 15504, 54264, 170544, 490314, 1307504, 3268760]]
[17, [1, 17, 153, 969, 4845, 20349, 74613, 245157, 735471, 2042975, 5311735]]
[18, [1, 18, 171, 1140, 5985, 26334, 100947, 346104, 1081575, 3124550, 8436285]]
[19, [1, 19, 190, 1330, 7315, 33649, 134596, 480700, 1562275, 4686825, 13123110]]
[20, [1, 20, 210, 1540, 8855, 42504, 177100, 657800, 2220075, 6906900, 20030010]]
[21, [1, 21, 231, 1771, 10626, 53130, 230230, 888030, 3108105, 10015005, 30045015]]
[22, [1, 22, 253, 2024, 12650, 65780, 296010, 1184040, 4292145, 14307150, 44352165]]
[23, [1, 23, 276, 2300, 14950, 80730, 376740, 1560780, 5852925, 20160075, 64512240]]
[24, [1, 24, 300, 2600, 17550, 98280, 475020, 2035800, 7888725, 28048800, 92561040]]
[25, [1, 25, 325, 2925, 20475, 118755, 593775, 2629575, 10518300, 38567100, 131128140]]
[26, [1, 26, 351, 3276, 23751, 142506, 736281, 3365856, 13884156, 52451256, 183579396]]
[27, [1, 27, 378, 3654, 27405, 169911, 906192, 4272048, 18156204, 70607460, 254186856]]
[28, [1, 28, 406, 4060, 31465, 201376, 1107568, 5379616, 23535820, 94143280, 348330136]]
[29, [1, 29, 435, 4495, 35960, 237336, 1344904, 6724520, 30260340, 124403620, 472733756]]
[30, [1, 30, 465, 4960, 40920, 278256, 1623160, 8347680, 38608020, 163011640, 635745396]]
[31, [1, 31, 496, 5456, 46376, 324632, 1947792, 10295472, 48903492, 211915132, 847660528]]
[32, [1, 32, 528, 5984, 52360, 376992, 2324784, 12620256, 61523748, 273438880, 1121099408]]
[33, [1, 33, 561, 6545, 58905, 435897, 2760681, 15380937, 76904685, 350343565, 1471442973]]
[34, [1, 34, 595, 7140, 66045, 501942, 3262623, 18643560, 95548245, 445891810, 1917334783]]
[35, [1, 35, 630, 7770, 73815, 575757, 3838380, 22481940, 118030185, 563921995, 2481256778]]
[36, [1, 36, 666, 8436, 82251, 658008, 4496388, 26978328, 145008513, 708930508, 3190187286]]
[37, [1, 37, 703, 9139, 91390, 749398, 5245786, 32224114, 177232627, 886163135, 4076350421]]
[38, [1, 38, 741, 9880, 101270, 850668, 6096454, 38320568, 215553195, 1101716330, 5178066751]]
[39, [1, 39, 780, 10660, 111930, 962598, 7059052, 45379620, 260932815, 1362649145, 6540715896]]
[40, [1, 40, 820, 11480, 123410, 1086008, 8145060, 53524680, 314457495, 1677106640, 8217822536]]
[41, [1, 41, 861, 12341, 135751, 1221759, 9366819, 62891499, 377348994, 2054455634, 10272278170]]
[42, [1, 42, 903, 13244, 148995, 1370754, 10737573, 73629072, 450978066, 2505433700, 12777711870]]
[43, [1, 43, 946, 14190, 163185, 1533939, 12271512, 85900584, 536878650, 3042312350, 15820024220]]
[44, [1, 44, 990, 15180, 178365, 1712304, 13983816, 99884400, 636763050, 3679075400, 19499099620]]
[45, [1, 45, 1035, 16215, 194580, 1906884, 15890700, 115775100, 752538150, 4431613550, 23930713170]]
[46, [1, 46, 1081, 17296, 211876, 2118760, 18009460, 133784560, 886322710, 5317936260, 29248649430]]
[47, [1, 47, 1128, 18424, 230300, 2349060, 20358520, 154143080, 1040465790, 6358402050, 35607051480]]
[48, [1, 48, 1176, 19600, 249900, 2598960, 22957480, 177100560, 1217566350, 7575968400, 43183019880]]
[49, [1, 49, 1225, 20825, 270725, 2869685, 25827165, 202927725, 1420494075, 8996462475, 52179482355]]
[50, [1, 50, 1275, 22100, 292825, 3162510, 28989675, 231917400, 1652411475, 10648873950, 62828356305]]

2019年3月11日月曜日

190311(2)

Ruby


33

33 is the sum of three cubes
ということが示されたようだ。

def A(a, b, c)
  a ** 3 + b ** 3 + c ** 3
end

# OEIS A060465のデータ
ary0 =
[0,0,0,1,-1,0,0,0,1,-2,7,-1,-511,1,-1,0,1,-11,
 -2901096694,-1,0,0,0,1,-283059965,
 -2736111468807040,-1,0,1,0,1,117367]
# OEIS A060466のデータ
ary1 =
[0,0,1,1,-1,-1,0,1,1,-2,10,2,-1609,2,-2,-2,-2,-14,
 -15550555555,-1,-1,0,1,1,-2218888517,
 -8778405442862239,2,2,2,-3,-3,134476]
# OEIS A060467のデータ
ary2 =
[0,1,1,1,2,2,2,2,2,3,-11,2,1626,2,3,3,3,16,
 15584139827,3,3,3,3,3,2220422932,8866128975287528,
 3,3,3,4,4,-159380]

p (0..31).map{|i| A(ary0[i], ary1[i], ary2[i])}

出力結果
[0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39]

190311

Ruby


A306646

Lucas数列, Perrin数列, ... , を出力してみた。

def A(k, n)
  a = [k + 1] + Array.new(k - 1, 0) + [k]
  ary = [k + 1]
  while ary.size < n + 1
    a = *a[1..-1], a[0] + a[1]
    ary << a[0]
  end
  ary
end

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

出力結果
[1, [2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778, 9349, 15127, 24476, 39603, 64079, 103682, 167761, 271443, 439204, 710647, 1149851, 1860498]]
[2, [3, 0, 2, 3, 2, 5, 5, 7, 10, 12, 17, 22, 29, 39, 51, 68, 90, 119, 158, 209, 277, 367, 486, 644, 853, 1130, 1497, 1983, 2627, 3480, 4610]]
[3, [4, 0, 0, 3, 4, 0, 3, 7, 4, 3, 10, 11, 7, 13, 21, 18, 20, 34, 39, 38, 54, 73, 77, 92, 127, 150, 169, 219, 277, 319, 388]]
[4, [5, 0, 0, 0, 4, 5, 0, 0, 4, 9, 5, 0, 4, 13, 14, 5, 4, 17, 27, 19, 9, 21, 44, 46, 28, 30, 65, 90, 74, 58, 95]]
[5, [6, 0, 0, 0, 0, 5, 6, 0, 0, 0, 5, 11, 6, 0, 0, 5, 16, 17, 6, 0, 5, 21, 33, 23, 6, 5, 26, 54, 56, 29, 11]]
[6, [7, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 6, 13, 7, 0, 0, 0, 6, 19, 20, 7, 0, 0, 6, 25, 39, 27, 7, 0, 6]]
[7, [8, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 7, 15, 8, 0, 0, 0, 0, 7, 22, 23, 8, 0, 0, 0, 7, 29, 45]]
[8, [9, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 8, 17, 9, 0, 0, 0, 0, 0, 8, 25, 26, 9, 0, 0, 0]]
[9, [10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 9, 19, 10, 0, 0, 0, 0, 0, 0, 9, 28, 29, 10]]
[10, [11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 10, 21, 11, 0, 0, 0, 0, 0, 0, 0, 10]]

2019年2月25日月曜日

190225

Ruby


A076408

べき乗数を小さい順に足していくと、2019が出てくることを確認してみる。

# OEIS A001597のデータ
ary =
[1,4,8,9,16,25,27,32,36,49,64,81,100,121,125,128,
 144,169,196,216,225,243,256,289,324,343,361,400,
 441,484,512,529,576,625,676,729,784,841,900,961,
 1000,1024,1089,1156,1225,1296,1331,1369,1444,1521,
 1600,1681,1728,1764]
p ary[0..21].inject(:+)

出力結果
2019

2019年1月3日木曜日

190103

Ruby


A320843(1)

出力してみた。

def search(a, num, n)
  if num == n + 1
    @cnt += 1
  else
    (1..n).each{|i|
      if a[i] == 0
        if num % i == 0 || i % num == 0
          a[i] = num
          search(a, num + 1, n)
          a[i] = 0
        end
      end
    }
  end
end

def A(n)
  a = [0] * (n + 1)
  @cnt = 0
  search(a, 1, n)
  @cnt
end

p (0..20).map{|i| A(i)}

出力結果
 [1, 1, 2, 3, 8, 10, 36, 41, 132, 250, 700, 750, 4010, 4237, 10680, 24679, 87328, 90478, 435812, 449586, 1939684]