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

直径と各弦が整数となる組み合わせ -その2-

$
0
0

ちょっと間が空いてしまいましたが、



上図のような半径をrとする半円があり、
∠αの弦をa、∠βの弦をb、直径をc、
mα+nα=180˚, m≧n>0, m, n∈Nを満たす。
各(m, n)において、(a, b, c)が既約な正の
整数となるようなものを求めよ。

という自作問題をプログラミングしていまして、
 

mnabc
11345
11435
1151213
1112513
1181517
1115817
1172425
1124725
11202129
11212029
21278
21379
21619
2131718
2143132
21122332
2120732
2152325
21101725
2115725
318458282197
3123124954913
3143751029615625
31164282775550653
31151295428068921
3140931194220226981
3167600201663274625
3193925550116614125
31260100157157614125
31308919146960704969
4181732
41271781
4127127162
4164449512
4119217512
41125433625
4112511511250
413754311250
4121624492592
4134320172401
51273437514769849765625
512543184951872200115856201
51152304251520632300844596301
512856100003729600631160290625
5167860812531924452844437053125
512081208020570790449910510100501
5124457104151449067883218424351793
5175148606255334800558464097340625
51106092150004319089646364097340625
51465787421326863126325154963892093
61327128
612437821458
61102459838192
613125554315625
6131252577431250
6177768186393312
611680776751117649
6116807213982235298
615042163902235298
6132768487807524288
71427509381694205436520194754273881
715667241179719334203043803142742836021
7149029437031251525634231931632057708828125
712123040301202018712692999099107213535210701
7131229276289135140277922759408235260548044817
711579999446406259168463833420961347646586640625
712230587453750005332503164790231347646586640625
7166807473821453947162606639099406364290927201661
711636648392655612623799548726191511514990476898413
7124466561410337412024314738405366025748143198497941
812187300713122
811638470529131072
8178125543551781250
8127993626383693359232
8182354323717775764801
81823543969484711529602
8120971522944153733554432
816291456207452933554432
8147829692706976143046721
8147829697772095986093442
913542376825507812543493220003156084231616946283203125
9139876662893596481510935005182901319523004041937984268273
9133219488360691406251391099678948098382428334269484119140625
914689810121509375000210200430299580878328334269484119140625
9121886796498646512179121874910240833598420208500535066053616021
9163516687470571646108126614861389951203555446885265417950510117
911194971325842289441818238170945821424627801257565061957837936381
9160899673598723522563221153335006823677032954891005035897482905857
9155936440603957148437545721300423407830393046444850765238541015625
9123030040889246712880252168456626833131747455228833611193336884526073
322916
32211054
323544125
327235343
3216118343
32161286686
323282991024
32153329729
32639621458
328901872000
5227118243
524484752048
528752373125
5212541936250
5258311151133614
5235843958965536
522988917149118098
523100077207200000
523061348713161051
5222627184425322102
723287256
7216807539285823543
7210038332167274782969
7241334356674939565938
7211273571072512819487171
727569397394129738974342
722488325005427371663616
7211510083873937062748517
72853973965279611125497034
721290937585000619170859375
922187552219683
927812525026823906250
92140002316593480707214
9214680064137823851268435456
923100000001699440732000000000
9233128190721316508104715895382
92439239619597859517710604499373
923074677333276464264621208998746
9232678186241719437400741322093568
921905891737621809310453137438953472
4328223512
432702891250
438581912592
4393621436561
434070215914641
431076423928561
4365782064157122
43129502254376832
431952508750625
433387222831131072


m=1、n=1、のときは既約ピタゴラス数のことであり、
既約ピタゴラス数は無限に存在するので、プログラムでは各(m, n)において最大で10個表示するということにしました。

また、初期に作成したプログラムが吐き出したデータから、以下のような法則があるのではという推測のもと、新たにプログラムを作成しました。

法則1
(a, b, c)が整数解を持つならば、
cまたはrのどちらかが、xm
aが、xm-nの倍数
となるような整数xが存在するのではなかろうか。

プログラム的には、xをインクリメントさせて、a、c、rを定め、
余弦定理よりαを求め、βを求め、余弦定理よりbを求める。

逆三角関数、三角関数を使うことで、どうしてもbに誤差が生じてしまう。

C言語では、調べられる範囲が限られてしまい、また小数点以下何位まで0か9が連続して連なれば、整数とみなすかということになる。

C言語で作ったものが吐き出したデータが正しいのかを、多倍長電卓LMで小数点以下100桁まで0が続くことを確認して、おそらく正しいとしていたが、上記の法則を使って多倍長電卓LMでプログラミングしている。

法則2
gcd(m, n)=1でなければ、解が無い可能性がある。
上記データは、gcd(m, n)=1を除外して、多倍長電卓LMでプログラミングしたものの出力結果である。
m=5, n=3を検索途中なのだが、値を返さないで時間だけが過ぎて行っていたので、途中で止めたしまいました。
現在、終了条件をcが何桁以内まで検査するということで、プログラムを変更中。


ではでは


Viewing all articles
Browse latest Browse all 5376

Trending Articles