2016年8月29日月曜日

160829

Ruby


A064098 の一般化(2)

さらに以下のように一般化してみた。

a(1) = … = a(m) = 1,
a(n) = (a(n - 1)^2 + a(n - 2)^2 + … + a(n - m + 1)^2 + l) / a(n - m)

a(n) が次の式を満たすことを確認する。

a(n) = (l + m) a(n - 1) a(n - 2) … a(n - m + 1) - a(n - m)

def A(l, m, n)
  a = Array.new(m, 1)
  ary = [1]
  while ary.size < n
    i = a[1..-1].inject(0){|s, i| s += i * i} + l
    break if i % a[0] > 0
    a = *a[1..-1], i / a[0]
    ary << a[0]
  end
  ary
end

def f(l, m, n)
  a = Array.new(m, 1)
  ary = [1]
  while ary.size < n
    a = *a[1..-1], (l + m) * a[1..-1].inject(:*) - a[0]
    ary << a[0]
  end
  ary
end

n = 15
(2..5).each{|m|
  (0..3).each{|l|
    p [m, l]
    p ary = A(l, m, n)
    p ary == f(l, m, n)
  }
}

出力結果
[2, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
true
[2, 1]
[1, 1, 2, 5, 13, 34, 89, 233, 610, 1597, 4181, 10946, 28657, 75025, 196418]
true
[2, 2]
[1, 1, 3, 11, 41, 153, 571, 2131, 7953, 29681, 110771, 413403, 1542841, 5757961, 21489003]
true
[2, 3]
[1, 1, 4, 19, 91, 436, 2089, 10009, 47956, 229771, 1100899, 5274724, 25272721, 121088881, 580171684]
true
[3, 0]
[1, 1, 1, 2, 5, 29, 433, 37666, 48928105, 5528778008357, 811537892743746482789, 13460438563050022083842073547074914, 32770967840592833551621556305285371426044732591005957081, 1323334797809963656861785234880408064260223167114490923392574512330556652655057425980815313, 130100886304103216096269302368140024854212683500400145519844606400800271582536062584259137069206125145839685186927848217995891874083713539249669145]
true
[3, 1]
[1, 1, 1, 3, 11, 131, 5761, 3018753, 69564144001, 839987873581797251, 233732149587751710483796746251, 785328685279672432967483833110876164468741280003, 734226246973363127354668827312570246092792043625372932024478449584047744277761, 2306435732933677342690218910410724121175682882186356562594762803229906069677645031853562876118134874279048543333995555830906881, 6773782608308607921398307560281896628612366852653747511189663608340122824020406568922638591442551019855232002600197992308907488200225117068985140995649272949733569058994345906663492344363995456631219413761]
true
[3, 2]
[1, 1, 1, 4, 19, 379, 36001, 68221876, 12280278789001, 4188918283943281893379, 257205421755835764162969182531400019, 5387062469611818058343633992667773233961471182929504082004, 6927908372607709242921886981147028231825029096877908213897294775300114330023800443884233897001, 186605375934922387857601775672728339263672258577514850692255800124258042344904969475053964621972843495797294490915100392589897931218837185344487436950001, 6463924731565789748717381389326928418912455841267402289666543409508337236592244286361773394326348423957520817154000596666929983199728073037178959969488229315600051975036667717975274416650788541795856411232140785270877154019570256916960399600153001]
true
[3, 3]
[1, 1, 1, 5, 29, 869, 151201, 788361985, 715206722963041, 3383050750802928506227109, 14517483846596507658258301721952167308829, 294680307761986210798652457911736924598338574909564950862166109125, 25668099647068333730772755179523699016703000007135936054352751420657160760697941598647779038581798633560641, 45383301021980557333406393682714525864001145991551481824018549611679673866601759571543522764660146663827747472936374577423898592827586117972830834656677776143295022098385921, 6989418557670570559224521036361101534726233194778670624355942501065353051026999536101655142436696117816980979190040512939162106385398062396473108100118047199470994321807500550964597993037097140344764576047929584675817292643713106218087673196762756732960495377627132020180878703041]
true
[4, 0]
[1, 1, 1, 1, 3, 11, 131, 17291, 99665321, 903016046275353, 6224717403288400029624460201, 2240882930472585840954332388399544581477407095086361, 50384188378657848181032338163962292285660644698840136656562636145266593550842871302412156442811, 2811208559412471230637519057535445324451041635392248839938340627248170057853220869446189635601250468348340035702397415736552020524798639195337707713250514159543533558279384531, 1269598770915928352522144806697712468901587133211528125405892617159616248853266216723546718859369968296475291160917420714387931467235812999865697447124057749943918124261530732961947316328936851840140632972593072562320049616102589187893389343676476254049367981004869947881523987444321297655272481530113255109514041519833403]
true
[4, 1]
[1, 1, 1, 1, 4, 19, 379, 144019, 5185404091, 1415179768826376436, 5284257989697826589787882104688841, 193886796198316302609610159795591363955441027433554915785933561, 7249596961072679698014466904615422466867250458927615154646078349048556138424538703736914320705810739233314332782089, 37137794968324076485728174380391585469816068104922770223552662811008716263188116450430971162232915566577087308753507915018662860448413237855369987021769197593804620001989555485125411770207665386686195672506830009, 261004632589512487655184438519847498867072182865383138396295908825107290854749159603013357209895399759957067885294876451585511393503895394768071451578004542805568586027424372087170491543242200540464944832523567718409903697699462350262507642302202258529332331568657784902608171430321314108972139801528903395359876504647983368083521825482971592670738820718066181665059651370910364478336162964]
true
[4, 2]
[1, 1, 1, 1, 5, 29, 869, 756029, 114316120969, 450626741861055934585, 233676018964684397003430348639837077641, 72225380030638430493541197815017288708673420851319338330402348359152761, 45632282449338403696075421010615641382394468712686132028955968874313373205723965077848452104958603411863444096131902052843340654541, 4620909076404181970789436057295624232009692382255591496853842316896650562529170597461241361158662037437906662980426314411411792885328400364055635812203998674196208747516540844382870957334419580743778079447694461015954620563155000434844725461, 91377800713138699025855847253265802842942468953679668328972158971258113165068878920728528406589395136343802435777790341344822060931189880886167281297872605643715163345273346145278851783478126399319875713017225142100345570520334637665453451868010724759961636507881021511556673872601178671686807168295174136841594698768379818671442373444053933219008068500605407241348953043147039148190575025377115145602874188054349153083566959711682115362353325]
true
[4, 3]
[1, 1, 1, 1, 6, 41, 1721, 2963561, 1463782794041, 52260001661933154192006, 1586930722664297523633014981207512858822321, 849771311788699332338627838007675807324331648618337934893978705260688964165201, 493318602513140887603197778897668073117371317034933936007977269425505782351874390118448027523906097795918526168908329849639959267289606409993841, 4656778336132108425663497719489287557286881604578634112940424907919498525429574526083610013565377158736442140591707156809019417929456570939509144068033259989717186688572990113119723003022780753269691792035626226778767443474949077032058804457068555130968553521983121, 13665110998331046746804077801848280417226859681429244875068305939869659784960161175225410996652420130497392702144072547854377985517714064558468463364773558179601459512748134434274941710425937019861138477549114102177720720634299400904603981834042526516284676846956963908743861577542248115178903842604409172909521511051629962922364647253171784123534916883857478466287191095234740581967297988335714227521564672120153486225975397557515270887646894412160836846864862511526209172459413935702406]
true
[5, 0]
[1, 1, 1, 1, 1, 4, 19, 379, 144019, 20741616379, 107553662508585672001, 608831069421618273050865038881215685876, 978035016076705458999330010986670207956236476587064788804921180339451725001, 6641849288442229883871418840635987214331565630981482974817790935047556138969583875264353346505327698957205720334444719692863099521406504105611001, 2126843017646602450589223632205369450537107173767834892077705146986027281652888869187373480852107972904348053938403068615461763818894544615453585744913846304500540821603658749854246078720764973508499469122478030972281893516628392466416366148872861382775616621452791216348571853001]
true
[5, 1]
[1, 1, 1, 1, 1, 5, 29, 869, 756029, 571580604869, 65340877572596697422401, 147221733860588623504618833613189895893231585, 24941586790469490040830627483911990604953808542208481230903187689734147542044643664641, 822829219020066898625655760637144380774049488923442309146659665555264035200221819037825724061738634260815649417200852553824777578059748068653786493643884289720105761, 1184518715130904719432095153826784792061811534097668361707873050143178460405264946287993972201558848672538195469041711756674017118557529455228418414844184867974173392388084411768832513665053234169452899810942597270556297960329905853509161111329349536938722638342257048045031597713323678844358205461575182662260165576641]
true
[5, 2]
[1, 1, 1, 1, 1, 6, 41, 1721, 2963561, 8782696764281, 12855960408886788329035201, 4031115074021086774670549084510232030089499300486, 9442120127832673972384327861079720510118761650504383038975108898627426113690896671226701213361, 30083279037759948749984074732128569095649750809080485755417898813753882178829142737038119013626148007726132752586715235972123831900031266712375349616806256199514233567312383235479121, 103043939914258868388371391918323953957253919966647874487928087843172253791340518202516805175310121605699709476998274531156483071471454193297817944074727926689333986432442589313573562129230489360826501057573984141761508639961091355576419064465779273806687496048138466775328045784590581529929805755779100319198303057719761811548300863377736428943144881]
true
[5, 3]
[1, 1, 1, 1, 1, 7, 55, 3079, 9483319, 89933348739079, 1155429602203556041795786753, 24273046648150322850091592306016362016363974451287041, 191354593563910887628804696067660198727470436806082165683225570846491354177172296158483246054061768705, 3861156677109514727802872029438009286995738713826974863733472045512296788757785648153079866442790162342777956194134980532019378049512297672167604471437886811591079535181649580424154521409878338561, 165773109688610338830434141244575068050710149116894210792825436196511712415347952931972026213070226289019459593445987616063150241663310953441160486700821531863258204863480004387309731748485744797364694799914377876627475815125632173388406431659480165206823421313649468340012760546715639185690721241581128609066411031252806543794300497201352394171062884926359972512865182443939841]
true

0 件のコメント:

コメントを投稿