1.<定義1>による探査

1.2 m、n、m+n、m−nのうち、2個が2乗数となる場合

1000以下の数で、解が見つからなかった 163個 について、 ループ回数を増やす、という直接的な方法もあるが、他の手だてを考えてみる。


もともとの式、

g=T(m)T(n)T(m+n)T(m−n)

は互いに素な4つの数の積である。
例えば、素数を小さい方から4つ持ってくると、

g=2×3×5×7=210

となり、最小の4つで既にこの状態なのだから、 大きなm、nについてgが1000以下になるためには、
T(m), T(n), T(m+n), T(m−n) 自体がかなり小さい数でないと成立しない。
そこで、これらの4つの数、m, n, m+n, m−n のうち2つが2乗数である場合を考える。

4つの数のうち2個を2乗数 i2, j2 に割り当てる方法は、以下の6とおり。

No.mnm+nm-n
1i2j2  
2i2 j2 
3i2  j2
4 i2j2 
5 i2 j2
6  i2j2

m>nであることに注意すると、

No.mnm+nm-n
2i2j2−i2j22i2−j2
4j2−i2i2j2j2−2i2

より、i>jとなるようにi、jを入れ替えると、

No.mnm+nm-n
2j2i2−j2i22j2−i2
4i2−j2j2i2i2−2j2

この場合をそれぞれ(4)(5)とする。

以上まとめると、以下の5とおりについて、調べればよいことがわかる。

No.mnm+nm-n
(1)i2j2i2+j2i2-j2
(2)i2i2-j22i2-j2j2
(3)i2+j2i22i2+j2j2
(4)j2i2−j2i22j2−i2
(5)i2−j2j2i2i2−2j2

プログラムは以下のようになる。

プログラム

 10   ' congruum : cong_2.ub
 20   L%=32767:M%=1000
 30   ' i2=i^2, j2=j^2, k2=i2+j2, L2=i2-j2
 40   for I%=2 to L%:I2=I%^2
 50     for J%=1 to I%-1:if gcd(I%,J%)>1 then 210 else J2=J%^2:K2=I2+J2:L2=I2-J2
 60       A=fnSub(K2):if A>M% then F%=1:goto 140 else F%=0
 70   ' (3)  i2+j2, i2, 2i2+j2, j2
 80       G=fnSub(A*(I2+K2)):if G>M% then 100
 90       R%=fnPrt(3,K2,I2)
100   ' (1)  i2, j2, i2+j2, i2-j2
110       B=fnSub(L2):if B>M% then 210
120       G=fnSub(A*B):if G>M% then 140
130       R%=fnPrt(1,I2,J2)
140   ' (2)  i2, i2-j2, 2i2-j2, j2
150       if F%=1 then B=fnSub(L2):if B>M% then 210
160       G=fnSub(B*(I2+L2)):if G>M% then 180
170       R%=fnPrt(2,I2,L2)
180   ' (4)  j2, i2-j2, i2, 2j2-i2   (5)  i2-j2, j2, i2, i2-2j2
190       C=abs(J2-L2):G=fnSub(B*C):if G>M% then 210
200       R%=fnPrt(4,J2,L2)
210     next J%
220   next I%
230   end
240   '
250   fnSub(N)
260   local P,S=1
270   P=prmdiv(N):if or{P>M%,P=0} then return(N)
280   N=N\P:if N@P=0 then N=N\P else S=S*P
290   if or{S>M%,N=1} then return(S) else goto 270
300   '
310   fnPrt(T,M,N)
320   local K,X,Y
330   reduce M,N:if M<N then swap M,N:T=5
340   print "(";cutspc(str(T));"):";G;",";M;",";N;",";I%;",";J%;":";
350   K=isqrt(M*N*(M+N)*(M-N)\G):X=(M*G)//N:Y=(K*G*G)//(N*N)
360   print num(X);",";num(Y);",";isqrt(den(X))
370   return(0)

32,767以下のi、jについて調べたところ、新たに以下の 30個 について解が求められた。

 47,  61,  79, 134, 166, 183, 206, 213, 247, 262,
309, 335, 437, 447, 469, 471, 511, 526, 559, 589,
591, 655, 678, 687, 719, 821, 871, 894, 902, 942

実行結果は以下のとおり。

解が依然見つかっていないのは、以下の 133個

 53,
101, 103, 118, 127, 142, 157, 167, 173, 181, 191, 197, 199,
223, 229, 237, 263, 269, 271, 277, 278, 287, 293,
302, 303, 311, 317, 326, 327, 334, 349, 358, 359, 365, 367, 373, 382, 383, 389, 397, 398,
407, 413, 415, 421, 431, 439, 446, 453, 454, 461, 463, 478, 479, 485, 487, 493,
501, 502, 503, 519, 533, 541, 542, 543, 557, 566, 573, 583, 597, 599,
607, 613, 614, 623, 631, 638, 647, 653, 661, 662, 677, 679, 685, 695,
701, 703, 717, 718, 727, 733, 742, 743, 757, 758, 766, 767, 773, 781, 789, 797,
807, 815, 822, 823, 829, 831, 838, 839, 853, 862, 863, 877, 878, 886, 887, 893,
911, 917, 919, 926, 933, 941, 958, 965, 967, 974, 982, 983, 989, 991, 997, 998

この章の目次

E-mail : kc2h-msm@asahi-net.or.jp
三島 久典