(プログラミングに興味のない方は表計算ソフト編へ)
先日紹介した『数学ガール フェルマーの最終定理』は、付録でフェルマーの最終定理の反例(?)を紹介しています。しかしそれは、計算すればすぐに反例ではないことがわかってしまうものでした。ここではもう少し凝って、計算すると「反例」だということになるものを紹介しましょう。
「a^3 + b^3 = c^3」となるような、正の整数a,b,cを探します。素朴に、次のようなプログラムを書けばいいでしょう(gotoを使った方がプログラムが簡単になる簡単な例です)。
#include <stdio.h>
int main ()
{
int a, b, c;
for (c=1; ; c++) {
for (a=1; a<c; a++) {
for (b=a; b<c; b++) {
if (a*a*a+b*b*b==c*c*c) goto found;
}
}
}
found:
printf("Found!\n");
printf("a=%d, b=%d, c=%d\n", a, b, c);
return 0;
}
実行すると、反例が見つかります(規格で規定していない動作を利用しているので、うまくいかない処理系もあるかもしれません)。C++やJava、C#でも同様のプログラムで見つけられるでしょう。このプログラムは実行に少し時間がかかるので、codepadではタイムアウトしてしまうのですが、結果を検証するコードなら実行できます。
種明かしは後日。Perl, awk, JavaScript, PHP等で試したい向きはこちら。
フェルマーの最終定理自体に興味のある人には、最近文庫になったサイモン・シン『フェルマーの最終定理』もお勧めです。
サイモン・シンの作品は面白いですね。
ビッグバン宇宙論も早く文庫化してほしいです。
しおざわさん
サイモン・シンはうまいですね。
でも、フェルマーの最終定理に関する本は、いくら数式を使って説明されても、まったく核心に近づいた気分にはなれないんです。
それに比べればビッグバン理論は、理解するためのトレーニングがかなり少なくていいです。