前回の、プログラミングの記事の続きです。
問題
ab(a+b)(a-b)=13c2
を満たす自然数(a,b,c)の組を見つけてください。
というものでした。
更に、問題を一般化して、
問題
ab(a+b)(a-b)=mc2
を満たす、mを合同数する自然数(m,a,b,c)の組を見つけてください。
でしたね。
前回は、あるaとbを互いに素にすると、
(1) aとbが平方数
(2) aがmの倍数で、a/mとbが平方数
(3) bがmの倍数で、aとb/mが平方数
という解のパターンが出来るので、それぞれの解を見つけようと、枷を作りました。
3パターンすべて見つかった素数m
m=5,a=5,b=4,c=6 ............. (2)
m=5,a=9,b=1,c=12 ............ (1)
m=5,a=1681,b=720,c=747348 ... (3)
m=13,a=325,b=36,c=9690 ................................... (2)
m=13,a=361,b=289,c=19380 ................................. (1)
m=13,a=11432100241,b=4882597200,c=21419556323063484180 ... (3)
m=41,a=25,b=16,c=60 ....... (1)
m=41,a=41,b=9,c=120 ....... (2)
m=41,a=841,b=41,c=24360 ... (3)
残りの状況
m=7,a=16,b=9,c=60 .... (1)
m=7,a=25,b=7,c=120 ... (3)
m=23,a=24336,b=17689,c=72306780 ... (1)
m=23,a=42025,b=6647,c=144613560 ... (3)
m=29,a=4901,b=4900,c=90090 ... (2)
m=29,a=9801,b=1,c=180180 ..... (1)
m=31,a=1600,b=81,c=103320 ..... (1)
m=31,a=1681,b=1519,c=206640 ... (3)
m=37,a=777925,b=1764,c=4737551070 ..... (2)
m=37,a=779689,b=776161,c=9475102140 ... (1)
m=47,a=14561856,b=2289169,c=12111037689240 .... (1)
m=47,a=16851025,b=12272687,c=24222075378480 ... (3)
m=53,a=1873180325,b=1158313156,c=297855654284978790 ... (2)
m=53,a=3031493481,b=714867169,c=595711308569957580 .... (1)
m=61,a=12079525,b=10227204,c=9147755349330 ... (2)
m=61,a=22306729,b=1852321,c=18295510698660 ... (1)
m=71,a=3600,b=121,c=281820 .... (1)
m=71,a=3721,b=3479,c=563640 ... (3)
m=79,a=169000000,b=166952241,c=495683115837000 ... (1)
m=79,a=335952241,b=2047759,c=991366231674000 ..... (3)
aとbが約数gを持つと、cはg2の倍数となるという性質があります。
なので、aとbは互いに素とすることで、こういった解を消すことが出来るということでもあります。
さて、完璧ではないがある程度出揃ってはいるデータを観察していると、色々な性質らしきものが朧気にだか見えてきます。
上記データでは、aを昇順で表示しているのですが、それが功を奏しています。
aを昇順にした際の1番目のデータのcと、2番目のデータのcの関係性が見えてきます。
これは、前回の記事でも書いたかと思うのですが、随分前から気がついていました。
これ以外に何か法則はないだろうか。
新たな法則を発見しました。
3種類見つかっているもので、出現順が(2),(1),(3)のものにおいて、
2番目のデータのcと、3番目のデータのbの関係性です。
mc2=b
という関係性です。
これは、問題文に置ける右辺が、3番目のデータのbと関係があったということになります。
m=5,a=5,b=4,c=6 ............. (2)
m=5,a=9,b=1,c=12 ............ (1)
m=5,a=1681,b=720,c=747348 ... (3)
5×122=720
m=13,a=325,b=36,c=9690 ................................... (2)
m=13,a=361,b=289,c=19380 ................................. (1)
m=13,a=11432100241,b=4882597200,c=21419556323063484180 ... (3)
13×193802=4882597200
と、たった2組しかないですが、妙な合致が見られるのです。
これが偶然なのか、必然なのか、数学的な考証はまだ出来ていませんが、データは物語っているように見えるのです。
となると、出現順が(2),(1),(3)となるものについて、3番目のデータのbを確定した上で、aを探すという方法が使える可能性があるということでもあります。
早速、プログラムを組んで検索をかけてみる。
m=29,a=4901,b=4900,c=90090 ............................................... (2)
m=29,a=9801,b=1,c=180180 ................................................. (1)
m=29,a=2306861784099601,b=941480139600,c=19963602234100641893484527820 ... (3)
m=29の3番目の解が見つかりました。
こうなってくると、m=37, 53, 61に対しても、実施したいところではあるのですが、如何せん2番目のデータのcが大きいのです。
この問題の性質上、(a-b)というものを含むために、a>bという条件はついて回ります。
つまり、常にaはbよりも大きくなければなりません。
そうなると、aは64ビットで賄えなくなってくるということでもあります。
もっといえば、a+bは更に大きいわけです。
例)
m=37,a=777925,b=1764,c=4737551070 ..... (2)
m=37,a=779689,b=776161,c=9475102140 ... (1)
37×94751021402=3321769740847005445200
3番目のデータのbは64ビットに収まってはいるが、aが収まるかは別問題です。
これ以降の、m=53, 61は、3番目のデータのbすら64ビットに収まらないことが確定しています。
こうなってくると、多倍長の関数を作って、時間が多少掛かってでも計算するということになってくるのだろう。
また、(1),(3),(2)の順のパターンについては、(2)についての何らルールが見つかっていないので、闇雲に探すにしても時間がかかってしまうというとこです。
さて、この結末を見ることは出来るのだろうか。
次の進展は随分と先になりそうです。
ではでは