Homeに戻る  一覧に戻る 

A Challenge Problem of Fermat


[2004.08.15]Fermatの問題:約数和が立方数となる平方数


■1657年1月に、Fermatが英国の数学者宛に出題した問題の1つについて、考察する。
参考文献[1](p62-64)によると、
     「平方数であって、その全ての約数和が立方数となるものを捜せ。」
という問題である。ただし、nの約数にはn自身も含めることとする。

pari/gpでプログラムを作成して、1018以下の平方数について、約数和が立方数となるものを探すと、1, 1857437604=(2・3・11・653)2の2個の解が見つかる。

これらが条件を満たすことは、簡単に確認できる。
まず、1の約数和は1であるので、立方数である。
次に、1857437604=(2・3・11・653)2の約数和は、
     (1+2+22)・(1+3+32)・(1+11+112)・(1+653+6532) = 7・13・133・427063 = 7・13・(7・19)・(7・132・192) = (7・13・19)3
であるので、立方数である。

[gp2cによる計算]
bash-2.05a$ gp2c-run -g chfermat.gp
Reading GPRC: ./gp2c_gprc ...Done.

                  GP/PARI CALCULATOR Version 2.1.5 (released)
                       i386 running netbsd 32-bit version
                (readline v1.0 enabled, extended help available)

                       Copyright (C) 2002 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and 
comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?12 for how to get moral (and possibly technical) support.

   realprecision = 28 significant digits
   seriesprecision = 16 significant terms
   format = g0.28

parisize = 128000000, primelimit = 500000
gp>  find(1,10^6)
[1, 1]
[1857437604, 1729]
time = 7mn, 13,785 ms.
gp>  find(1,10^7)
[1, 1]
[1857437604, 1729]
time = 1h, 40mn, 52,592 ms.
gp>  find(10^7+1,10^8)
time = 20h, 59mn, 17,142 ms.
gp>  find(2*10^8+1,5*10^8)
time = -60675913 ms.
gp>  find(5*10^8+1,10^9)
time = 289h, 46mn, 12,977 ms.

■Fermatの問題の特殊な場合、平方数がある素数の平方である場合を考察する。
平方数がある素数yの平方y2であり、その約数1,y,y2の和が立方数x3であるとする。
     y2+y+1 = x3
より、楕円曲線
     E: y2+y = x3-1
の整点を求めれば十分である。

楕円曲線Eのねじれ点群E(Q)torsは自明である。

[pari/gpによる計算]
gp>  e=ellinit([0,0,1,0,-1])
time = 196 ms.
%1 = [0, 0, 1, 0, -1, 0, 0, -3, 0, 0, 648, -243, 0, [0.9085602964160698294456058781, -0.4542801482080349147228029390 - 0.7868362975662361391456411172*I, -0.4542801482080349147228029390 + 0.7868362975662361391456411172*I]~, 2.547933978487607138564157948, 1.273966989243803569282078974 + 2.206575552535821184808829617*I, -0.7118706291247177088741299153 + 0.E-29*I, -0.3559353145623588544370649576 - 1.849494147090048072211166564*I, 5.622208826406084850104251964]
gp>  e.disc
time = 0 ms.
%2 = -243
gp>  elltors(e,1)
time = 38 ms.
%3 = [1, [], []]

mwrank3によって、EのMordell-Weil群E(Q)を求めると、そのrankは1で、生成元は(1,0)であることが分かる。

bash-2.05a$ mwrank3
Program mwrank: uses 2-descent (via 2-isogeny if possible) to
determine the rank of an elliptic curve E over Q, and list a
set of points which generate E(Q) modulo 2E(Q).
and finally search for further points on the curve.
For more details see the file mwrank.doc.
For details of algorithms see the author's book.

Please acknowledge use of this program in published work, 
and send problems to John.Cremona@nottingham.ac.uk.

Version compiled on Feb 11 2003 at 17:40:15 by GCC 3.2.1
using base arithmetic option LiDIA_ALL (LiDIA bigints and multiprecision floating point)
Using LiDIA multiprecision floating point with 15 decimal places.
Enter curve: [0,0,1,0,-1]

Curve [0,0,1,0,-1] :    No points of order 2
Basic pair: I=0, J=1296
disc=-1679616
2-adic index bound = 2
By Lemma 5.1(a), 2-adic index = 1
2-adic index = 1
One (I,J) pair
Looking for quartics with I = 0, J = 1296
Looking for Type 3 quartics:
Trying positive a from 1 up to 2 (square a first...)
(1,0,-6,4,-3)   --nontrivial...(x:y:z) = (1 : 1 : 0)
Point = [1 : 0 : 1]
        height = 0.506367355380099
Rank of B=im(eps) increases to 1
Trying positive a from 1 up to 2 (...then non-square a)
Trying negative a from -1 down to -3
(-3,0,0,4,0)    --trivial
Finished looking for Type 3 quartics.
Mordell rank contribution from B=im(eps) = 1
Selmer  rank contribution from B=im(eps) = 1
Sha     rank contribution from B=im(eps) = 0
Mordell rank contribution from A=ker(eps) = 0
Selmer  rank contribution from A=ker(eps) = 0
Sha     rank contribution from A=ker(eps) = 0
Rank = 1
Points generating E(Q)/2E(Q):
Point [1 : 0 : 1], height = 0.506367355380099
After descent, rank of points found is 1

Generator 1 is [1 : 0 : 1]; height 0.506367355380099

The rank has been determined unconditionally.
The basis given is for a subgroup of full rank of the Mordell-Weil group
 (modulo torsion), possibly of index greater than 1.
Regulator (of this subgroup) = 0.506367355380099

 (5.3 seconds)
Enter curve: [0,0,0,0,0]


楕円曲線Eの有理点をいくつか求めると、以下のようになる。

[pari/gpによる計算]
gp> for(i=0,5,print(ellpow(e,[1,0],i));if(i>0,print(ellpow(e,[1,0],-i))))
[0]
[1, 0]
[1, -1]
[7, -19]
[7, 18]
[73/36, 487/216]
[73/36, -703/216]
[2443/1369, -137826/50653]
[2443/1369, 87173/50653]
[296221/32041, 158277601/5735339]
[296221/32041, -164012940/5735339]
time = 30 ms.

楕円曲線Eの整点は、
     (1,0), (1,-1), (7,-19), (7,18)
である。
この中で、yが素数かつ正整数となるものは、存在しない。
よって、平方数が素数の平方であり、その約数和が立方数であるものは、存在しない。

■Fermatはこの問題を出題しているので、当然のこととして、自明でない解1857437604を知っていたと思われるが、どのような方法で求めたのであろうか?
また、これら以外に解はあるだろうか?

[2004.08.23追記]
■SIMATH-4.6(simcalc)を使って、楕円曲線Eの整点を求める。
simcalcによると、楕円曲線EのMordell-Weil群E(Q)のrankは1であり、その生成元は(1,0)である。
また、楕円曲線Eの整点を(Pと-Pを同一視して)求めると、
     (1,0), (7,18)
の2個となる。 これらの点のそれぞれを(-1)倍した点も整点であるので、楕円曲線Eは合計2*2=4個の整点を持つ。

[simclacによる計算]
> E=EC(0,0,1,0,-1)
                  simcalc in free(): warning: junk pointer, too high to make sense.
         E = EC(0, 0, 1, 0, -1)
> basismwg(E)
               basis :  PT(1, 0, 1)
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = 1
> faintp(E)
             all nontrivial integral points modulo negation :
  PT(1, 0, 1) = PT(0, 1, 0) + PT(1, 0, 1)
  PT(7, 18, 1) = PT(0, 1, 0) - 2*PT(1, 0, 1)
 
simcalc in free(): warning: junk pointer, too high to make sense.
         @ = PT(1, 0, 1)


[参考文献]



Last Update: 2006.12.16
H.Nakao

Homeに戻る[Homeに戻る]  一覧に戻る[一覧に戻る]