定理 100万(106)以下の自然数が合同数か否かは全て決定された.
合同数とは3辺の長さが全て有理数であるような直角3角形の面積となるような 整数のことであり, それらを全て決定するという問題は古くから考えられて来ました. 例えば3辺の長さが3,4,5の直角3角形の面積は6なので6は合同数であることはすぐにわかりますが, 3辺の長さが全て有理数でかつ面積が1となる直角3角形は存在せず, 1が合同数ではないことはFermat(フェルマー)によって示されていました. (3辺の長さが1,2,√5 であるような直角3角形の面積は1ですが, √5は無理数です.) これまでに, 素因数の個数やそれらを8で割った余りに制限を付けた整数が 合同数であるかどうかを調べた結果や(例えば8で割って3余る素数は合同数ではないなど), 合同数である(ない)ための判定条件などといった結果は数多く得られていますが, 今のところ, 与えられた自然数が合同数か否かを確かめるアルゴリズムは知られていません. (下に書くTunnellさんの結果はそれに近いものを与えていますが.)
合同数を小さい方から全て決定していくという試みも, 計算機の性能の向上とともに 進められていったのですが, 出版されている論文で一番広い範囲で決定を 行っているものは
F. Nemenzo: All congruent numbers less than 40000, Proc. Japan Acad. Ser. A, 74 (1998), 29-31.
ではないかと思います. この論文では42552以下の合同数, 非合同数を全て決定しています. その後10年近い月日が経っていますので, もう少し広い範囲で 決定がなされているかもしれませんが(例えば42553が合同数であることは わかっていました), 10万まででも完全に決定したという報告は (論文でもwebページなどでも)見当たりません. (もし既にどこかで公表されているようでしたら, 教えて頂けると助かります.)
次の結果は知られていました.
予想 8で割った余りが5,6,7となる自然数は全て合同数である.
定理 (Elkies) 100万以下の自然数に対し, 上の予想は正しい.
このElkiesさんの結果は研究集会ANTS-Vで 発表され, その報告集にも原稿が掲載されています. (preprint版はここで手に入ります.) Elkiesさんが作成している 計算数論のページでも 解説や計算結果を見ることが出来ます.
直角3角形の全ての辺の長さをn倍にすれば面積はn2倍となるため, 合同数となるかどうかは平方数を掛けても変化しないことは明らかです. そこで, 最初に述べた定理を確かめるためには, Elkiesさんの結果を認めると, 後は
(@) 平方因子を持たず, 8で割った余りが1,2,3
という条件を満たす100万以下の自然数に対して, それが合同数かどうかを 調べれば良いわけです. (Elkiesさんが扱った場合とは違い, 合同数となる場合もならない場合もあります.) 今回はその計算を, いくつかのソフトを利用して実行しました. 具体的な計算手順は以下の通りです.
J. B. Tunnell: A classical Diophantine problem and modular forms of weight 3/2, Invent. math. 72 (1983), 323-334.
において, 自然数nに対応する楕円曲線のL関数の中心値が0になるかどうかを 有限の時間で判定するアルゴリズムを与えました. つまりBirch, Swinnerton-Dyer予想が正しいという仮定の下では, 与えられた自然数が合同数であるか否かを(比較的容易に)判定できる訳です. このアルゴリズムをCで実装し, 条件(@)を満たす100万以下(実際には1000万以下)の 自然数に対して計算を行いました. この計算によりそれらの自然数が合同数と非合同数の候補に分けられるのですが, 非合同数と判定された数はBirch, Swinnerton-Dyer予想に関する
J. Coates and A. Wiles: On the conjecture of Birch and Swinnerton-Dyer, Invent. math. 39 (1977), 223-251.
の結果により, 実際に非合同数となることが保証されています. つまり後は合同数候補が実際に合同数であることを確認すれば良い訳です.
1-10m 10m-20m 20m-30m 30m-40m 40m-50m 50m-60m 60m-70m 70m-80m 80m-90m 90m-100m
各圧縮ファイルにはそれぞれ以下の3つのファイルが含まれています.
範囲 | 1-10m | 10m-20m | 20m-30m | 30m-40m | 40m-50m | 50m-60m | 60m-70m | 70m-80m | 80m-90m | 90m-100m |
(@)を満たす自然数 | 30389 | 30393 | 30398 | 30392 | 30401 | 30393 | 30400 | 30384 | 30418 | 30379 |
合同数 | 3660 | 3228 | 3045 | 2909 | 2773 | 2718 | 2680 | 2630 | 2592 | 2498 |
非合同数 | 26729 | 27165 | 27353 | 27483 | 27628 | 27675 | 27720 | 27754 | 27826 | 27881 |
となりました. ただし, 今回の計算は「合同数であると予想されるものが実際に合同数であることを確認する」 ところに意味があり, 個数がこのようになることは (計算が間違っていなければ)既に知られていたことだと思われます.
上にも述べた通り, 自然数nが合同数であることは, 楕円曲線 y2=x3-n2x がy≠0なる有理点(x,y)を持ち, Mordell-Weil群の階数が正となることと同値です. つまり検証データにおいてはMordell-Weil群の階数の下限が0でないことが 合同数であることを意味しています. それに続く数値が y2=x3-n2x の有理数解(x,y)であり, この関係式を使えば 面積がnとなる直角3角形を与えることも出来ます. このように, 合同数であることは(それが大変なのですが)直角3角形(もしくは 楕円曲線の有理点)を見つけてしまえば, 確認すること自体は難しくありません. 一方, 合同数でないことを確かめるには何らかの方法で直角3角形の非存在を 証明しなくてはならないため, 一般には簡単ではないはずなのですが, 先に述べたTunnellさんらの結果により, さほど大きくない(例えば1000万程度までの)数であれば 単純な計算で確認することが出来ます. つまりここに挙げた計算結果は簡単にチェックすることが可能です. どなたかチェックして頂けたら (そして間違いがあったらご指摘頂けると) とてもありがたいです. (合同数の方の検算はステップ4で検算をしましたが, 非合同数の方は特に検算をしていません.)
もうお気づきかもしれませんが, 今回の計算は既に知られている結果, アルゴリズム, そしていくつかのソフトに実装されているコマンドなどを 単純に組み合わせて利用しただけであり, 数学的に, もしくは計算の面において, 何か新しいこと開発したというようなことは一切ありません. 計算機やソフトウェアなどの性能向上と数学自体の進歩によって, これくらいのことならばさほど苦しまなくても出来るようになっていることに驚き, きりの良いところまで計算してまとめておこうと思ったのが, このページを作った動機です. なお, ほとんどの計算は1台のPCで行いました(2005年末と2006年5月). 気が向いたときに少し計算を進める, というようにしていたため 総計算時間はよくわかりませんが, 90万-100万の計算で丸1日くらいだったと思われます. (もっと新しいのPCなら倍以上の早さで計算できそうですが..) それだけ聞くともっと先まで計算を伸ばせそうに思えるかもしれませんが, 後半はかなり手強い例も現れていましたので, 次にきりの良い107まで全て決定するというのは (今の段階では)簡単ではないだろうと思います. (Elkiesさんが扱った場合も計算が残っているはずですし.)
計算データに関する注意