前回の、プログラミングの記事の続きです。
問題
ab(a+b)(a-b)=13c2
を満たす自然数(a,b,c)の組を見つけてください。
というものでした。
更に、問題を一般化して、
問題
ab(a+b)(a-b)=mc2
を満たす、mを合同数する自然数(m,a,b,c)の組を見つけてください。
でしたね。
前回は、プログラムの高速化を目的に数学的考察をしました。
それによって、100以下の合同数について、最低1つは解を見つけるということに成功しました。
詳しくは無印を御覧ください。
さて、合同数が素数で、aとbが互いに素という条件で高速化が出来たのだが、その中で解となりうる3つの条件が朧気に見えてきた。
(1) aとbが平方数
(2) aがmの倍数で、a/mとbが平方数
(3) bがmの倍数で、aとb/mが平方数
このように絞り込めたことが、プログラムの高速化に繋がったわけです。
チェックルーチンに値を渡すにしても、最初から平方数ないし、平方数×mを渡すので、余計なところを計算しないで済みます。
さて、この3つの必要条件の解がそれぞれあるのではなかろうか?
という疑問が出てきたのである。
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の昇順にしております。
前回の記事でも書いた通り、aとbが約数gを持つと、cはg2の倍数となるという性質があります。
そのため、aとbは互いに素としたうえで、(1)、(2)、(3)という必要条件を付けております。
なので、aとbの双方がmで割り切れるということは、aとbを互いに素としている段階で、起こり得ないということでもあります。
さて、3つすべて見つかったもの、まだ2つしか見つかっていないもの、どちらにしても、aを昇順にして並べると、1番目と2番目のcに法則が見えてきます。
1番目のcの2倍が2番目のcということです。
すると、cが約数g2を持つと、aとbは共にgの倍数になる。
ということでもあるが、2は平方数ではありませんので、aとbの関係性は別物ということでもあります。
つまり、1番小さなcが求まると、次のcの値は2倍すれば良いが、それが解ったとて、aとbが安易に求められるかというと、そうはなっていないということなんです。
また、3番目のcは今のところ、2番目のcの倍数になってはいるが、これが残りの全てにも言えることなのかは確定していない。
また、3番目のcの値が、1番目、2番目のcから特定出来たとて、aとbが安易に求められるかということでもない。
やはり、aとbからcを求めるのが、なんだかんだ手っ取り早いのだろうが、これ以上高速化出来るような数学的考証が出来るのだろうか。
さて、100未満の素数の合同数に対して、(1)、(2)、(3)、すべての解を見つけることが出来るのだろうか。
見つかり次第、追加していく。
ではでは