Quantcast
Channel: 円周率近似値の日に生まれて理系じゃないわけないだろ! - knifeのblog
Viewing all articles
Browse latest Browse all 5376

マーティン・ガードナー その7

$
0
0

前記事で少しだけやる気を取り戻しつつ、とりあえず、2^a、3^b、7^c、a+b+c<33224、つまり葉ノード直下の枝ノードの桁数が1万桁まで検索するプログラムを素因数分解ルーチンを入れて無いものを走らせている。

さて、上記プログラムを裏で走らせながら、そいつが吐き出したデータを見ていて、ふと疑問に思った。

a+b+c=231を最後に、葉ノードが粘度3以上になるものが見つかっていない。

高々、粘度3なのにだ。

各桁ごとに0を含む個数の割合を調べるプログラムを書いてみたところ、漸化式が分かった。

1190.000000000000000%
2990.000000000000000%
317181.000000000000000%
4243972.900000000000000%
53095165.610000000000000%
636855959.049000000000000%
7421703153.144100000000000%
84695327947.829690000000000%
951257951143.046721000000000%
10551321559938.742048900000000%
115861894039134.867844010000000%
1261757046351931.381059609000000%
13645813417167128.242953648100000%
146712320754503925.418658283290000%
1569410886790535122.876792454961000%
16714697981114815920.589113209464900%
177332281830033343118.530201888518410%
1874990536470300087916.677181699666569%
19764914828232700791115.009463529699912%
207784233454094307119913.508517176729921%
2179058101086848764079112.157665459056929%
22801522909781638876711910.941898913151236%
23811370618803474989040719.847709021836112%
248202335569231274901366398.862938119652501%
2582821020123081474112297517.976644307687251%
26835389181107733267010677597.178979876918526%
278418502629969599403096098316.461081889226673%
2884766523669726394627864884795.814973700304006%
29852898713027537551650783963115.233476330273605%
308576088417247837964857055667994.710128697246245%
3186184795755230541683713501011914.239115827521620%
32865663161797074875153421509107193.815204244769458%
338690968456173673876380793581964713.433683820292512%
3487218716105563064887427142237682393.090315438263261%
35874968444950067583986844280139141512.781283894436935%
368774716004550608255881598521252273592.503155504993242%
3787972444040955474302934386691270462312.252839954493917%
38881751996368599268726409480221434160792.027555959044526%
398835767967317393418537685321992907447111.824800363140073%
4088521911705856540766839167897936167023991.642320326826066%
41886697205352708866901552511081425503215911.478088294143459%
428880274848174379802113972599732829528943191.330279464729113%
4388922473633569418219025753397595465760488711.197251518256202%
44890302262702124763971231780578359191844398391.077526366430582%
458912720364319122875741086025205232726599585510.969773729787524%
4689214483278872105881669774226847094539396269590.872796356808771%
47892930349509848952935027968041623850854566426310.785516721127894%
488936373145588640576415251712374614657691097836790.706965049015105%
4989427358310297765187737265411371531919219880531110.636268544113594%
50894846224792679886689635388702343787272978924779990.572641689702235%
518953616023134118980206718498321094085456810323019910.515377520732011%
5289582544208207070821860466484889846769111292907179190.463839768658810%
53896242897873863637396744198364008620922001636164612710.417455791792929%
548966186080864772736570697785276077588298014725481514390.375710212613636%
5589695674727782954629136280067484698294682132529333629510.338139191352273%
56897261072550046591662226520607362284652139192764002665590.304325272217045%
578975349652950419324960038685466260561869252734876023990310.273892744995341%
5889778146876553773924640348169196345056823274613884215912790.246503470495807%
59898003321888983965321763133522767105511409471524957943215110.221853123446226%
608982029897000855687895868201704903949602685243724621488935990.199667811101603%
6189838269073007701191062813815344135546424167193521593400423910.179701029991443%
62898544421657069310719565324338097219917817504741694340603815190.161730926992299%
638986899794913623796476087919042874979260357542675249065434336710.145557834293069%
6489882098154222614168284791271385874813343217884077241588909030390.131002050863762%
65898938883388003527514563121442472873320088960956695174300181273510.117901845777386%
668990449950492031747631068092982255859880800648610256568701631461590.106111661199647%
6789914049554428285728679612836840302738927205837492309118314683154310.095500495079683%
68899226445989854571558116515531562724650344852537430782064832148388790.085950445571714%
698993038013908691144023048639784064521853103672836877038583489335499110.077355401014543%
7089937342125178220296207437758056580696677933055531893347251404019491990.069619860913089%
71899436079126603982665866939822509226270101397499787040125262636175427910.062657874821780%
728994924712139435843992802458402583036430912577498083361127363725578851190.056392087339602%
7389954322409254922595935222125623247327878213197482750250146273530209660710.050752878605642%
74899588901683294303363416999130609225950903918777344752251316461771886946390.045677590745077%
758996300115149648730270752992175483033558135268996102770261848155946982517510.041109831670570%
7689966701036346838572436776929579347302023217420964924932356633403522842657590.036998848503513%
77899700309327121547151930992366214125718208956788684324391209700631705583918310.033298963653161%
788997302783944093924367378931295927131463880611098158919520887305685350255264790.029969067287845%
7989975725055496845319306410381663344183174925499883430275687985751168152297383110.026972160559061%
80899781525499471607873757693434970097648574329498950872481191871760513370676447990.024274944503155%
818998033729495244470863819240914730878837168965490557852330726845844620336088031910.021847450052839%
8289982303565457200237774373168232577909534520689415020670976541612601583024792287190.019662705047555%
83899840732089114802139969358514093201185810686204735186038788874513414247223130584710.017696434542800%
848998566588802033219259724226626838810672296175842616674349099870620728225008175262390.015926791088520%
8589987099299218298973337518039641549296050665582583550069141898835586554025073577361510.014334111979668%
86899883893692964690760037662356773943664455990243251950622277089520278986225662196253590.012900700781701%
878998955043236682216840338961210965492980103912189267555600493805682510876030959766282310.011610630703531%
8889990595389130139951563050650898689436820935209703408000404444251142597884278637896540790.010449567633178%
89899915358502171259564067455858088204931388416887330672003639998260283380958507741068867110.009404610869860%
908999238226519541336076607102722793844382495751985976048032759984342550428626569669619803990.008464149782874%
9189993144038675872024689463924505144599442461767873784432294839859082953857639127026578235910.007617734804587%
92899938296348082848222205175320546301394982155910864059890653558731746584718752143239204123190.006855961324128%
938999444667132745633999846577884916712554839403197776539015882028585719262468769289152837108710.006170365191715%
9489995002004194710705998619200964250412993554628779988851142938257271473362218923602375533978390.005553328672544%
95899955018037752396353987572808678253716941991659019899660286444315443260259970312421379805805510.004997995805289%
968999595162339771567185888155278104283452477924931179096942577998838989342339732811792418252249590.004498196224760%
9789996356461057944104672993397502938551072301324380611872483201989550904081057595306131764270246310.004048376602284%
98899967208149521496942056940577526446959650711919425506852348817905958136729518357755185878432216790.003643538942056%
998999704873345693472478512465197738022636856407274829561671139361153623230565665219796672905889951110.003279185047850%
10089997343860111241252306612186779642203731707665473466055040254250382609075090986978170056153009559990.002951266543065%


n桁における、0を1つ以上含む個数の数列をA[n]とすると、

A[1] = 1
A[2] = 9
A[n] = 9*A[n-1] + 9*10^(n-2) = 9*(A[n-1] + 10^(n-2)) (n>2)

という漸化式で求めることが出来た。

n桁における、0を1つも含まない個数の数列をB[n]とすると、

B[1] = 9
B[n] = 9*10^(n-1) - A[n] (n>1)
B[n] = 9*10^(n-1) - 9*A[n-1] - 9*10^(n-2) = 81*10^(n-2) - 9*A[n-1] (n>2)

とA[n]を使って表せばよい。


問題は各桁ごとに0を含まない数の割合がどうなっているのかであり、上記表の最終カラムである。

数列で表すならば、

(100*B[n]) / (9*(10^(n-1)))

ブログの文字数制限で100桁までしか入れられなかったが、まぁ感覚は分かるだろう。

n=81で、1%未満まで落ち込むわけだ。


さて、裏で動いているプログラムが吐き出した、もしかしたら最後の粘度3以上は、

477777777777777777777778888888888888888888888888888888888888888888888888888888888888888888999-36641523983487774828771189482743969517485942786823813648678173449971876439961632768-6592810775225440970592374730768033552925755338391552000-0

2^a*3^b*7^c < 10001
a+b+c=231

粘度3: 10進93桁 =REPT(4,1)&REPT(7,22)&REPT(8,67)&REPT(9,3)
粘度2: 10進83桁 2^203*3^6*7^22
粘度1: 10進55桁 2^80*3^37*5^3*7^14
粘度0: 10進01桁 0

これは、100桁プログラムの時には粘度11が求まっている状態で、粘度3は眼中になかったから拾いもしなかったところです。

先の表をみると、93桁は約0.00617%であり、粘度2の枝ノードであるから、2の冪数はあるが、5の冪数は0という更に稀有な存在でもあるといえよう。

そう考えると、葉ノードの親ノードを10進1万桁まで検索しても、粘度3以上ですら出てくるのか怪しいところでもある。


さて、直前の記事で、親ノードの1桁の素因数の冪数から簡単に最小の葉ノードが求められると書いた。

やってみよう。

まずは、9から。
3^6の6は、2で割ると3、あまり0。
つまり、3^2=9が3個作れて、3の冪数は0個となった。

次は、8。
2^203の203は、3で割ると67、あまり2。
つまり、2^3=8が67個作れて、2の冪乗は2個残っている。

次は、7。
7^22の22は、7は素数なので、7が22個並ぶことを意味している。

次は、6。
6は、2*3=6なので、2の冪数と3の冪数が1個ずつ余っていたら、6を1個作れます。
6は2個以上作れないはずです。
今回は、3の冪数が0なので、6はありません。

次は、5。
5も素数なので、7と同様に5の冪数の個数だけ並びます。

次は、4。
この時点で2の冪数が2個以上余っているのであれば、
2^2=4より、残っている2の冪数の半分だけ4が並びます。
今回は2個残っているので、4が1桁並びます。

次は、3。
3も素数なので、3の冪数が残っていたら並びます。
今回は残っていない。

最後は、2。
2も素数なので、2の冪数が残っていたら並びます。
今回は残っていない。

言葉で書くと面倒くさいけど、プログラム的には簡単な部類である。


つづく(次の記事があるとしたら、新たな粘度3以上が見つかるか、10進1万桁まで検索しても見つからなかったという報告になるのだろうか。)

Viewing all articles
Browse latest Browse all 5376

Trending Articles