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

(x+y+z)(1/x+1/y+1/z)=n part5

$
0
0



昨日書いた記事のプログラムが出力した x≦y≦z<10万 のデータです。

 

nxyz
9111
10112
10122
11123
15126
15136
11236
142310
261614
182315
1821015
1431015
341621
5511435
342742
263742
3531065
552570
10512177
5921585
13113590
35639130
301077165
635119170
105311231
301430231
330190234
63710238
1263114247
59634255
74522270
370177286
190221322
179365442
3192150475
190346483
298285493
126613494
323275550
326255570
7411135594
8511234611
131718630
323322825
2945570874
2975513945
135912861066
67022101113
3305131170
3196191425
221516111598
3707262002
54555952002
23411512046
179151022210
38903912210
29810582465
1246311592562
29415232622
606715662639
2102624822847
169124932871
116634423026
188627143043
163521173094
54852863094
326111143135
234176823162
141936903542
29719353591
70705513654
21034393723
4951430023857
5050110663977
5786115984182
7021020654897
70956304959
3820711705083
1704217715106
67010535565
5351416775719
1107711786510
9510225306545
55514936634
11901050156834
821194757106
8541442517630
854107387667
406228067843
227511458330
951383578855
3383423258925
406262539269
170772229361
5590217699394
6391230519718
5552114989951
82175261810450
8731321710465
124310140610915
151351418210947
851184710998
34655604511253
4942669011635
32255572311682
1359114111726
88219438612255
42561645013889
1635923813923
22787499814210
188251397714841
1246194216226
3386223816275
100119223116587
98102287116731
11071910517670
1419157717710
163814317119630
38770664320002
10012317120079
606549120358
79313302620737
2215133420774
854397021255
492671278221663
882349521930
118177887422243
18111333022295
7655332222425
41556200222841
47706371824843
87331149524955
102330608325122
44270390526341
157232335028073
3961111094728658
153342157529050
203418725829223
102385159029309
240913165329393
16382113029445
74598166529822
11113222837930798
10770355131578
5357826631863
117030174332702
7027016634279
234519759936803
68156333337471
8186318738250
829561092738802
11663926739338
1890342452339559
421650355340850
222752358740934
54290693541026
44211074241393
12433829541477
49515820343529
5251142845544986
242072262345750
323165434346662
818771575046750
172703490246870
16913419848807
7410351853851615
5631171309051935
10811530652870
2751302927453095
3538191295054131
7262101831554242
7023411484155386
11459585856095
251273180257187
595910113457915
323215231060802
12355836561335
2980632780761594
20343815361693
3087261839561694
494138232761755
8073134236562517
18864217963903
1357032420666378
214734577566725
3893021060267239
10189523168134
11714692568894
8549093569003
224634626669615
2862631142774422
10369012865875026
10181053097075306
2492754871475895
981221295079550
8906144447880131
124270546780230
573815550280303
59591471581081
9013863522681473
1830663817082239
2146451333082818
135931255387906
124277113088253
47702214791091
10318101021592843
108119155595166
5713121673197513
6062555487098294
351530654598362
23455124798787
322485990103014
50502697103402
765514975104650
1811664459113190
11701051970114457
98194752503126850
3874551370130013
153349166130725
63912786131193
559029154136213
1830110237137065
353850209142450
346565121146289
25171422659149566
308765218154235
123514624534154395
606465833179242
2751102185180523
578647123196554
2409871547196707
1190295402201603
9037628701221141
415566753251251
2146155963285262
10770291662305254
829549174316883
1890274442318799
5251105166337395
35151051578344267
2227517194347939
151353489372198
5428555058389747
681566742412181
4926154261476586
981058338485199
1882541153608481
56313865499615230
1572350419701825
7931102699705058
8906126227721179
11459664315740454
1031890818835587
11714755586861175
8073185273889665
1727057545890530
21474625338906675
2862639254967486
2420743750983625
22464825355986895
573821030651124242
38930382411277541
29806932061909414
249271382152094702
726249514662684979
396111233223524934
70234973625372442
103690892336677314
5713119811549653787

 

z<10万で211組の(n, x, y, z)がみつかりました。
zが10万以上のものは、それまでの出力で片割れが出てないものを計算してリストに加えてあります。
決してz<1000万まで検索したわけではありません。

リストはプログラムの出力順と同じ、z, x, yの順で昇順にソートしてあります。

というわけで、対にしてnでソートしてみます。

 

nx1y1z1x2y2z2
9111111
10112122
11123236
118177887422243113222837930798
14231031015
15126136
18231521015
2616143742
3010771651430231
3416212742
3531065639130
3890391221020711705083
425616450138891650355340850
54555952002852863094
55114352570
5921585634255
635119170710238
70705513654956304959
7452227011135594
7459816652982210351853851615
821194757106175261810450
901386352268147337628701221141
95102253065451383578855
981221295079550194752503126850
102330608325122385159029309
10512177311231
1263114247613494
13113590718630
1357032420666378931255387906
1704217715106772229361
179365442151022210
190221322346483
210262482284734393723
22751145833087499814210
23411512046176823162
25127318025718771422659149566
294557087415232622
297551394519353591
29828549310582465
31921504756191425
32255572311682485990103014
323275550322825
323165434346662215231060802
326255570111143135
3301902345131170
33834232589256223816275
3701772867262002
387706643200024551370130013
406228067843262539269
4427039052634111074241393
4942669011635138232761755
495143002385715820343529
53514167757197826631863
542906935410268555058389747
555149366342114989951
563117130905193513865499615230
606715662639549120358
6062555487098294465833179242
6702210111310535565
70210206548977016634279
8186318738250771575046750
8511234611184710998
8541442517630397021255
8541073876679093569003
873132171046531149524955
88219438612255349521930
1001192231165872317120079
101895231681341053097075306
11077117865101910517670
1166344230263926739338
1170301743327021051970114457
11901050156834295402201603
1235583656133514624534154395
12427054678023077113088253
1243101406109153829541477
1246311592562194216226
135912861066114111726
141936903542157717710
163521173094923813923
1638211302944514317119630
1691249328713419848807
18111333022295664459113190
1830663817082239110237137065
1886271430434217963903
1890342452339559274442318799
2034187258292233815361693
2146451333082818155963285262
2147345775667254625338906675
221516111598133420774
2246346266696154825355986895
2345197599368035124798787
240913165329393871547196707
2751302927453095102185180523
308726183956169465218154235
3465560451125365121146289
3515306545983621051578344267
353819129505413150209142450
4155620022284166753251251
477063718248432214791091
492671278221663154261476586
50501106639772697103402
5251142845544986105166337395
559021769939429154136213
57381555028030321030651124242
578611598418247123196554
5959101134579151471581081
63912305197182786131193
6815633333747166742412181
726210183155424249514662684979
765533222242514975104650
79313302620737102699705058
8073134236562517185273889665
82956109273880249174316883
8906144447880131126227721179
9810228711673158338485199
1031810102159284390818835587
10770355131578291662305254
108115306528709155595166
11459585856095664315740454
11714692568894755586861175
1513514182109473489372198
1533421575290509166130725
15723233502807350419701825
17270349024687057545890530
18825139771484141153608481
22275235874093417194347939
24207226234575043750983625
24927548714758951382152094702
286263114277442239254967486
2980632780761594932061909414
3893021060267239382411277541
39611110947286581233223524934
571312167319751319811549653787
7023411484155386973625372442
10369012865875026892336677314


対にして、135対となりました。

これらのデータをもとに、新たにプログラムの改善を図るわけです。

先の記事に書いた、x, zからnのレンジを求めて、x, z, nからyを求めるという方法が速い理由も、これらのデータを解析すると解るかと思います。

n=11, x=8177, y=8874, z=22243を例にしてみます。

z=22243、x=8177、というところで、他の2つを求める。

y、nの順番で調べると、
x≦y≦zという条件にしているので、そのレンジでyを調べると、z-x+1=14067ループ。
698ループ目で見つかりました。

n、yの順番で調べると、
⌈(x+z+sqrt(xz))(1/x+1/z+1/sqrt(xz))⌉≦n≦⌊(2x+z)(x+2z)/xz⌋ → 11≦n≦11というレンジになり、1ループ。
1ループ目で見つかりました。

これは見つかった例ですが、見つからなければ全てのループを回してしまいます。

では、見つからない例で考えます。
z=99999, x=1のとき、
y、nの順番で調べると、z-x+1=99999ループ。
n、yの順番で調べると、100635≦n≦200003で、99369ループ。

あまり大差はない。
では、xが増えていくとどうなるか。

z=99999、x=2のとき、
y、nの順番で調べると、z-x+1=99998ループ。
n、yの順番で調べると、50450≦n≦100004で、49555ループ。

z=99999、x=3のとき、
y、nの順番で調べると、z-x+1=99997ループ。
n、yの順番で調べると、33702≦n≦66671で、32970ループ。

z=99999、x=4のとき、
y、nの順番で調べると、z-x+1=99996ループ。
n、yの順番で調べると、25319≦n≦50004で、24686ループ。

z=99999、x=5のとき、
y、nの順番で調べると、z-x+1=99995ループ。
n、yの順番で調べると、20286≦n≦40004で、19719ループ。



z=99999、x=20872のとき、
y、nの順番で調べると、z-x+1=79128ループ。
n、yの順番で調べると、12≦n≦12で、1ループ。



z=99999、x=31387のとき、
y、nの順番で調べると、z-x+1=68615ループ。
n、yの順番で調べると、12≦n≦12で、1ループ。

z=99999、x=31386のとき、
y、nの順番で調べると、z-x+1=68614ループ。
n、yの順番で調べると、12≦n≦11で、0ループ。



それぞれのループ数を合計すると、
y、nの順番で調べると、4999950000ループ
n、yの順番で調べると、924936ループ

ループの中での処理にもよるが、10万までで211組しか見つからないわけで、体感で100倍は速いと書いたが、100倍どころか5000倍以上速いわけです。

それでも、10万まで探すのにボロパソコンで丸一日掛かったので、100万まで求めるとしたらと考えるならば、何らかの枝刈りを施さなければならないだろう。

それよりも怖いのは、x≦y≦zという条件下で、xとzを定めると、nはユニーク(一意)になるという仮説で話しを進めてしまっていることだ。
さらに言えば、x、z、nを定めると、yはあっても1組になるというのも仮説です。
最新のプログラムはyが1組ないし片割れが見つかると、nのループをブレイクするようにしている。
これによるデータ抜けがあったとしたら怖いな。

今回のデータが不完全だったとしても、また新たな仮説が立てられそうです。
例えば、(x, y, z)=(1, 1, 1)以外では、z/x>0.5となるものは見つかってない。
更に、(x, y, z)={(1, 1, 2), (1, 2, 2)}がz/x=0.5で、これも除けば、z/x≧0.5は見つかっていないとも言える。
序盤のいくつかを除けば、z/xはもっと小さいのである。
つまり、xのループを半分以下に減らせるということ。
これが、n、yの順で求める方法でも施せる大きな枝刈りになりそうだということ。


ではでは


Viewing all articles
Browse latest Browse all 5376

Trending Articles