『連続する2自然数の立方の和=平方数』解答


◆北海道の高校生 ファージ さんからの解答。

BASICで簡単なプログラムを組んで1〜10000まで調べてみました。

window 1
for n= 1 to 10000
 a&=n^3+(n+1)^3
 b!=sqr(a&)
 c=b!
 if b!=c then PRINT n
next n
do
until mouse(_down)
end
あれ、n=1 の時しか成立しない。
プログラムがおかしいのでしょうか?


◆埼玉県 100ファット さんからの解答。

ファージさんと同様にBASICでプログラムを製作して算出してみました。

10 FOR n=1 TO 10000000
20    LET a=n^3+(n+1)^3
30    LET b=SQR(a)
40    IF INT(b)=b THEN 
50       PRINT n
60    END IF
70 NEXT n
80 END
1000万桁まで計算したところ、下記のn数でもこの方程式は成立することがわかりました。
 1 
 930867 
 983611 
 1028011 
 1244610 
 1361548 
 1434128 
 1608240 
 1965595
・・・・・(以下略)
全ての解はこちらです。

●青木コメント

誤差があるので、確信がないのですが、どなたか確認していただけませんか。


残念ながら、n=930867については、

n3+(n+1)3=(2n+1)(n2+n+1)=1861734・866514302557となり、
1861734=2・3・7・19・2333,
866514302557=103・2089・4027171なので、
n3+(n+1)3は平方数にならないと教えていただきました。

他の数についても見通しは暗そうですね。


◆愛知県 Y.M.Ojisan さんからのコメント。

100ファットさんの解答は見たところ、10進BASICを15桁(JIS)モードで使われています。
このため、100000004は29桁となり、桁あふれして正確な計算ができていません。
1000桁モードで実行すれば少なくともこの範囲では「1と2」以外は解がないはずです。

ただし、現状のプログラムでは特にルートの計算に多大な時間を要し、最後まで到達するには相当の時間を必要とするでしょう。

【高速プログラムで探査】

下記のプログラムで Nとして1を除き 1.75×1031を超える辺りまで存在しないことを確認しました。
なお、10進BASICの2進モードで実行します。
8をもっと大きくして計算するには10進モードにする必要があります。

LET  RR3=1/SQR(SQR(3.0))
LET  M8=2^26
FOR ST=1 TO 5 STEP 4
   FOR P1=ST TO M8 STEP 6
      LET  P2=1+INT(RR3*P1)
      IF MOD(P2,2)=1 THEN
         LET  T2=MOD(P2*P2,M8)
         LET  T2=MOD(T2*T2,M8)
         LET  T1=MOD(P1*P1,M8)
         LET  T1=MOD(T1*T1,M8)
         LET  TT=MOD(T2*3-T1-2,M8)
         IF TT=0 THEN
            PRINT "Pass M8";M8
            LET  T2=MOD(P2*P2,M8-1)
            LET  T2=MOD(T2*T2,M8-1)
            LET  T1=MOD(P1*P1,M8-1)
            LET  T1=MOD(T1*T1,M8-1)
            LET  TT=MOD(T2*3-T1-2,M8-1)
            IF TT=0 THEN
               LET  N=(3*((P1*P2)^2)-1)/2
               PRINT "Find N=";N,"AT P1,P2=";P1;P2
            END IF
         END IF
      END IF
   NEXT  P1
   PRINT "END for Start=";ST
   LET  P1=P1-6
   LET  N=(3*((P1*P2)^2)-1)/2
   PRINT "Checked TO N=";N,"AT P1,P2=";P1;P2
NEXT  ST
END
【プログラムの根拠】

 始めの整数をn≧2として考えます。
また、4は平方数なので 
4(n3+(n+1)3)=(2n+1)((2n+1)2+3)が平方数であるかを吟味します。

n≧2において
(2n+2)2>((2n+1)2+3)>(2n+1)2なので
((2n+1)2+3)は平方数ではありません。
従って、(2n+1)と((2n+1)2+3)は何らかの公約数をもつ必要があります。

互助法によりGCD(2n+1、(2n+1)2+3)=3です。
従って、2n+1と(2n+1)2+3は3の倍数(3を因数に持たない)に限られます。

そこで、2n+1=3m m:奇数>1 とおけば 
(2n+1)2+3=3(3m2+1)です。

次にGCD(m、3m2+1)=1なので、mと3m2+1はそれぞれ平方数でなければなりません。
そこでさらに、 m=p2  p:奇数>1とおきます。
このとき 3p4+1=q2でなければなりません。
pは3以上の奇数なので、q:偶数≧16 です。

3p4=(q−1)(q+1) と変形されますから、q±1の何れかは3の倍数であり、
q=6K±2です。ここで K:整数。 

q=6K+2のとき q−1とq+1は 6k+1と3(2K+1)であり、
GCD(6K+1,2K+1)=1なので、6K+1と2K+1はそれぞれ4乗数でなければなりません。

q=6K−2の場合も同様に6K−1と2K−1が4乗数でなければなりませんが、
4乗数が6K−1になることはありません。

よって、 p14=6K+1 ,p24=2K+1 であるような Kが存在しなければなりません。

ここで、p14=6K+1となるように、
1=6g+1ないし6g+5とおきます。

一方、p2≒p1×(3)-0.25です。
つまりp2、p1が存在するなら
2=[p1×(3)-0.25]+1
であって ( [ ]はガウス記号 )

3p24−p14−2=0

を満足します。

また少なくとも 任意の整数M8に対して

3p24−p14−2≡0 mod M8

です。
プログラムでは M8として 226の後、226−1を用いて2段階検査しています。

この2段階をPassした場合はさらにModなしの検査を1000桁モード等で実施する必要があります。
以上をクリアするものがある場合、nは下記で計算されます。

n= 3p2212−1

なお、p2=[p1×(3)-0.25]+1を計算するとき、(3)-0.25の値が2進モードでは桁落ちしていますが、これは問題ありません。
なぜならp2≒p1×(3)-0.25であるのでそのような場合は決して成立しないからです。

逆に、10進モードを用いる場合は、p1の最大桁+3桁ぐらいで明確に切り捨てるようプログラム(下記)する必要があります。

RR3=INT(RR3*M8*1000)/M8/1000


◆東京都 昔とった杵柄 さんからのコメント。

全然解けていないのですが、変な問題にぶつかってしまったので、報告します。
問題を解こうと思いまして、次の 3つが、分かりました。

(1) まず、
x3+(x+1)3 = (2x+1)*(x2+x+1) と因数分解できます。

(2) 次に、x>1 では、
x2 < x2+x+1 < (x+1)2 が成り立つので、
x が整数なら、x2+x+1 は平方数にはなりません。

(3) また、2x+1 と x2+x+1 の最大公約数は、ユークリッドの互除法を使って、
x=1 mod (3) の時 3、x=0,2 mod (3) の時 1 となりました。

従って、もし、x>1 で平方数になるとしたら、
x=1 mod (3) で、 2x+1
3
が、平方数であり、
かつ、 x2+x+1
3
も平方数である場合に限られます。

そこで、パソコンで x2+x+1
3
が平方数になる場合を調べたところ、
どことなく、規則性のあるような数字が並んだのですが、その先に、全然、進めなくなってしまいました。

よく考えると、これが分かっても、元の問題には遠いのですが、
x2+x+1
3
が平方数になるのは、どんな場合なのでしょう?

X= 
1
22
313
4366
60817
847078

◆広島県 清川 育男 さんからのコメント。

Y.M.Ojisan さんの推論に従えば、2000桁程度まで存在しません。
十進BASICの1000桁モードで実行します。

REM y=(p2)^2,x=(p1)^2
REM 3*y^2-x^2=2
REM y=A(n) ,x=B(n)
DIM A(1749)
DIM B(1749)
LET  A(1)=1
LET  A(2)=3
LET  B(1)=1
LET  B(2)=5
FOR N=3 TO 1749
   LET  A(N)=4*A(N-1)-A(N-2)
   LET  B(N)=4*B(N-1)-B(N-2)
   LET  Y=A(N)
   LET  Y1=SQR(Y)
   LET  Y2=INT(Y1)
   LET  X=B(N)
   LET  X1=SQR(X)
   LET  X2=INT(X1)
   IF Y1=Y2 AND X1=X2 THEN
      PRINT "Y=";Y
      PRINT "X=";X
   END IF
NEXT N
LET  YY$=STR$(A(1749))
LET  XX$=STR$(B(1749))
PRINT LEN(YY$)
PRINT LEN(XX$)
PRINT LEN(YY$)+LEN(XX$);"桁”
END

3*(P2)4-P14=2
(P2)2= (3+sqrt(3))2*k-1+(3-sqrt(3))2*k-1
6k

(P1)2= (1+sqrt(3))*(2+sqrt(3))k-1+(1-sqrt(3))*(2-sqrt(3))k-1
2

k=1,p2=,p1=1
N=1 のときだけではないでしょうか?。


◆東京都 昔とった杵柄 さんからのコメント。

依然として、元の問題は、解けていないのですが、conejoさんの、もうひとつの問題と、Y.M.Ojisanさんの解答を見て、前回、報告した問題は、解決できましたので、証明します。

<補題>

X2+X+1
3
が平方数になるのは、

X(0)=-2、X(1)=1
X(n)=14X(n-1)-X(n-2)+6

で定義される、数列{X(n)}。

<証明>

まず、
X2+X+1
3
= Y2 を満たす、整数(X,Y)の解は、

X+1
2
=x と置く事により、

双曲線 x2/3-y2 = -1/4 の上の、半整数 x, 整数 y の点と1対1対応します。

ここで、次の変換を考えました。
f(x,y) = (7x-12y, -4x+7y)

このfは、 双曲線x2/3-y2 = -1/4 上の、 (半整数,整数)の点を、同じ双曲線の(半整数,整数) の点に移します。

∵ 
(7x-12y)2/3 - (-4x+7y)2= x2/3 - y2 だから。

ところで、0≦x<6, y≧0 の範囲では、
双曲線上の(半整数,整数)の解は、( 3
2
,1)しかありません。

∵ x= 1
2
, 3
2
, 5
2
, 7
2
, 9
2
, 11
2
を調べました。

もし、x≧6,y≧0 の範囲に、(半整数,整数)の解が有ったとします。
その点を(s,t) とすると、f(s,t) = ( 7s-12t, -4s+7t ) の作用によって、
x≧0,y≧0 の範囲で、x座標が 1/13s 以下の点に移ります。

∵ x座標に付いては、
7s-12t = 7s - 12(s2/3+1/4)0.5< (7-4√3)s < 1/13 s

また、s≧6 なので、49s2≧48s2+36 であり、
従って、7s-12(s2/3+1/4)0.5 ≧0 と言えます。

y座標に付いては、
-4s+7t = -4s+7(s2/3+1/4)0.5 > (-4+7/√3)s > 0 です。

この事から、fを繰り返し、作用させていくと、
必ず、0≦x<6 y≧0 の範囲の(半整数,整数)に降りて来ます。

従って、x≧0,y≧0 の範囲にある、双曲線上の(半整数,整数)の点は、
f -n ( 3
2
,1) と、書き表せます。

なお、逆関数は、f-1(x,y) = (7x+12y,4x+7y) です。

最後に、(x n ,y n )=f n (- 3
2
,1)と、置きます。

-1を行列 Aで表示すると次のようになりますが、

7 12
4 7
ケーリー・ハミルトンの公式より、
A2 = 14A - I  (単位行列) が成り立ちます。

従って、{(xn,yn)}は、
(x 0 ,y 0 )=(- 3
2
,1)、(x 1 ,y 1 )=(3
2
,1) であって、

(xn,yn) = 14(xn-1,yn-1) - (xn-2,yn-2) の漸化式による数列となります。

X=x-1
2
と置き換えると、

X2+X+1
3
が平方数になるのは、

X(0)=-2, X(1)=1
X(n) =14 X(n-1)-X(n-2)+6 を満たす数列となります。

証明終わり。

解いていて、双曲線と、行列と、漸化式が、綺麗な関係で結ばれているような感じがしました。
もしかすると、より大きな理論の一部なのでしょうか?

ちなみに、元の問題は、この結果を使うと、x=0以外では、
Z(n)= 2X(n)+1
3
が平方数になる時、

つまり、Z(0)=-1、Z(1)=1、Z(n)=14 Z(n-1)-Z(n-2)
の数列で、Z(n) が平方数になる時の、X(n) と言う事が出来ます。

でも、この先は、解けませんでした。

いわゆるフィボナッチ数列の場合、平方数は 144、1個だけ、と聞いた事がありますが、
Z(n)にも、もしかしたら、1 以外に、ひとつぐらい、平方数があるのかなぁ、と思ったりもしています。


 『連続する2自然数の立方の和=平方数』へ

 数学の部屋へもどる