「ABC予想」がついに証明された、最近よくニュースで取り上げられています。
解説する数学系YouTuberも出てきて、私もいくつか視聴しました。
・A+B=C において自然数AとBが互いに素。ただしA<B。
・根基(A,B,C)=D とすれば、たいていDはCより大きいだろう。
これを宇宙際タイヒミュラー理論を使って証明したそうです。
ABC予想が正しいならフェルマーの最終定理が1ページで証明できる(その方法もすぐに理解可能)という強力無比さ。
どうやって証明したのかは人類数学トップ10くらいしか理解できないようなので、もちろん私には理解不能。
ただ、実際の計算なら中学生でもできる内容です。
条件を満たすABCの組を ABC-Triple というらしいです。
まれに D < C となるABCの組を ABC-hit と言い、
Cが100より小さい場合、具体的なABC-hitを求める演習問題が出ていたのでやってみました。
プログラム設計にあたっては
・最大公約数(gcd : greatest common divider)を求める関数
・素因数分解(factorize)をする関数
・根基(radical)を求める関数
・ABC-Tripleを生成し、その中からABC-hitを求める関数(メイン)
を作ればよいことがすぐにわかります。
AとBが互いに素という条件は最大公約数が1であること。
CはAとBを足すだけ。
A,B,Cそれぞれを素因数分解してユニークソートかけて全部を掛け算すれば根基が計算できる。
Tclで書いたプログラムをそのまま載せます。
実行してみると
C < 10 のときは解は1つだけ。
1+8=9
Radical(1, 8, 9) = Radical(1, 2*2*2, 3*3) = 2 * 3 = 6
6(=D) < 9(=C)
C < 100 のときは解は6つになりました。最後の例、
32+49=81
Radical(32, 49, 81) = Radical(2*2*2*2*2, 7*7, 3*3*3*3) = 2 * 7 * 3 = 42
42(=D) < 81(=C)
ABC-Tripleが1501通りあって、まれな例であるABC-Hitはたったの6つ、およそ0.4%未満でした。
結果を載せませんが、C < 1000 のときは解は31個で実行時間は2分程度でした。
Cの値を大きくしていくと素因数分解にかかる時間が膨大になっていきABC@Homeみたいな世界中の計算機から元気玉をもらわないと計算完了できなくなります。