前回の、プログラミングの記事の続きです。

 

 

 

 

 

 

 

問題

ab(a+b)(a-b)=13c2

を満たす自然数(a,b,c)の組を見つけてください。

 

というものでした。

 

更に、問題を一般化して、

 

問題

ab(a+b)(a-b)=mc2

を満たす、mを合同数する自然数(m,a,b,c)の組を見つけてください。

 

でしたね。

 

前回は、m=29について、(1)、(2)、(3)すべての解を見つけることが出来ました。

 

ある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=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=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=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を昇順に解が見つかった順番が、(2)、(1)、(3)の場合の、(3)を機械的に求める方法が解りました。

 

m=5,a2=5,b2=4,c2=6 ............. (2)
m=5,a1=9,b1=1,c1=12 ............ (1)
m=5,a3=1681,b3=720,c3=747348 ... (3)

m=13,a2=325,b2=36,c2=9690 ................................... (2)
m=13,a1=361,b1=289,c1=19380 ................................. (1)
m=13,a3=11432100241,b3=4882597200,c3=21419556323063484180 ... (3)

m=29,a2=4901,b2=4900,c2=90090 ............................................... (2)
m=29,a1=9801,b1=1,c1=180180 ................................................. (1)
m=29,a3=2306861784099601,b3=941480139600,c3=19963602234100641893484527820 ... (3)

a、b、cをパターンを添え字にして説明します。

 

あるmにおいて、aを昇順で探索したところ、

(2)が、何らかの方法で求まりました。

求まった値を、m、a2、b2、c2とします。

ここから、(1)を求めるには、

a1=a2+b2

b1=a2-b2

c1=2×c2

ということになります。

これらの値から、a3、b3を求めようというのが今回の報告です。

 

前回、

b3=m×c12

であるところまでは突き止めましたが、bを決め打ち出来たため、多少はaを探索しやすく、m=29が求まったというものでした。

 

今回判明した方法は、プログラム的な探索を必要としない方法となります。

a3=(a2×a1-b2×b1)2

という漸化的に求められるということです。

 

a3とb3が求まれば、c3も求まります。
c32=a3×b3×(a3+b3)×(a3-b3)÷m

 

こんな単純な式でしたが、それに気がつくまで時間がかかってしまったということです。

 

m=37,a=777925,b=1764,c=4737551070 ........................................................................... (2)
m=37,a=779689,b=776161,c=9475102140 ......................................................................... (1)
m=37,a=366231234000473296817041,b=3321769740847005445200,c=2099902380421417782407469041718656942460024540 ... (3)

m=53,a=1873180325,b=1158313156,c=297855654284978790 ................................................................................................................... (2)
m=53,a=3031493481,b=714867169,c=595711308569957580 .................................................................................................................... (1)
m=53,a=23527291048033496191402318814072693521,b=18808214047380954410766488918971189200,c=40841596628578779431884173364075053761716960908309613632184762476956848020 ... (3)

m=61,a=12079525,b=10227204,c=9147755349330 ......................................................................................... (2)
m=61,a=22306729,b=1852321,c=18295510698660 ......................................................................................... (1)
m=61,a=62755573680413135651364664081,b=20418268415211733800873531600,c=271972927911612455014999601111101746236654950461057238140 ... (3)

 

前回、桁が多くなりすぎるから、多倍長を組み込む必要があるとか、そういった話しで、当分解は見つからないと思っていたものが、機械的に求めることが出来ました。

 

当然、64ビットを超えるような計算ですので、多倍長電卓LMを使って、値を求めるということはやっております。

 

さて、この機械的に求める方法ですが、m=41

 

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)

について、適用できるかというと、

a=(25×41-16×9)2=776161

b=1202×41=590400

c=53265859080

と、前の(1)、(2)より、(3)の条件を満たす解を求めることは出来るが、それが(3)の条件でaが最小の解かは別問題ということです。

 

こうなると、今回見つかった(3)についても、最小かどうかまでは判断出来ないということなのかもしれません。

 

ただ、これについては、求まったa以下の条件で探索すればいいだけなので、ある意味上限が見つかったとも言えるので、探索するしないはまた別の問題かなと思う。

 

もともと、どんな方法であろうとも、(1)、(2)、(3)を満たす解がすべての素数の合同数mについて存在するだろうという仮説のもと、最低1つは見つかれば良いくらいの考えでした。

 

それよりも、残りの(1)、(3)、(2)の順番で見つかるパターンにおいて、(2)を求める方法が解れば、この記事も終焉を迎えられるということでもあります。

 

それには、(1)、(3)、(2)の解を一つでも見つけて、それを踏まえての考察となるだろう。

 

こちらはまだまだ先になりそうです。

 

 

ではでは