世にも美しい数学入門
世にも美しい数学入門という本が最近売れてるらしいです。国立のお茶の水女子大学理学部の教授が書いてるらしいんだけど、66ページ目に書いてある自分が証明したという定理が間違っているのが英語版ウィキペディアで発見されました。その定理というのは
というもので、著者は定理が正しいことを「証明した」と書いています。ところが!
ある自然数 N の各桁の数字の合計を s とする。
その s と s の各桁の数字の順番を逆にした数字の積を p とする。
N = p となるのは、1と81と1729だけである。
例えば、1729の場合
1+7+2+9=19
19をひっくり返すと91。
19×91=1729
というもので、著者は定理が正しいことを「証明した」と書いています。ところが!
#include <stdio.h>
int main(int argc, char *argv[]){
int number, /* 数字 */
digit[10], /* 桁 */
digit_sum, /* 各桁の合計 */
digit_sum_inv, /* 各桁の合計のひっくりかえしたもの */
buf, /* 桁処理用バッファ */
i, /* 桁カウンタ */
digit_power; /* 桁計算用 */
/* digit[0] は簡単のため不使用 */
/* 1桁〜4桁の数字 */
for(number=1; number<10000; number++){
/* 各桁の番号を digit 配列に代入 */
buf = number;
digit_sum = 0;
for(i=1; buf ;i++){
digit[i] = buf % 10;
buf /= 10;
digit_sum += digit[i];
}
/* 各桁の合計の桁を出す */
buf = digit_sum;
digit_sum_inv = 0;
digit_power = 1;
for(i=1; buf ;i++){
digit[i] = buf % 10;
buf /= 10;
digit_power *= 10;
}
/* 各桁の合計のひっくりかえす */
for(i=1; digit_power ;i++){
digit_power /= 10;
digit_sum_inv += digit[i] * digit_power;
}
if(number == digit_sum * digit_sum_inv){
printf("%d: %d*%d\n", number, digit_sum, digit_sum_inv);
}
}
/* 5桁の数字は全部足しても2桁にしかならないので,
掛けても5桁に至らない。6桁以降も同様。*/
}のような簡単なプログラムを書くだけで、さらに1458も該当する(1+4+5+8=18,18×81=1458)ということがわかり、この教授が行ったという証明が間違いであることがわかります。ただ、このプログラムによる証明によって、1と81と1458と1729の4つしか該当しないというのは確かだと思います。本の中で「この定理は醜い」とか書いてるけど、醜い以前に定理じゃないような……。2つしかない!と書いているので誤植とも思えないし、国立大学の数学の教授ともあろう人が、こんな簡単な定理の証明を間違えるなんてどうしたのかなあ?
- | comments (5) | trackbacks (9)
Comments
...。数学はすごく苦手なので、残念ながらくっきーさんの証明もわからないのですが...。(もともと、本書でも数学の具体的な部分は飛ばして読みました...)
藤原先生は面白いので好きなんです、間違っておられるとしたら残念ですよ。
私も数学は不得手なので、「美しいのだ」という主張を信じたいですが(実際美しい部分もあるんでしょうが)、これは残念。先生もプログラム必修にしなくちゃ。でも、面白そうなので本読んでみます。・・・って、えっ、先生の父上は新田次郎で、母上は藤原ていなんですか!?うへぇ〜。
早速、証明を見直してみます。
…と言いたいとこですが、図書館で借りたモノなので、面倒です。
やっぱり読み込みたい本は、自分で買った方がいいのかなーと反省中です。
残念ながら、私には、証明はわからないのですが、くっくーさんの証明式を見るとそれだけで「美しい」と感じました。
以前、先生がテレビに出られているのを見て、数学って面白いんだ。と思いました。
子ども達にこんな教え方をしていただいたら、きっと興味を持つんだろうな、って。
今、同書をはじめ物理等、「文系向き理数系」の本がたくさん出ています。
難しいと思って、手を出しかねていたジャンルにも興味を持って入っていけるようになりました。
これからも、読ませていただきます。
よろしくお願いいたします。
書き込みありがとうございます。
証明はわからなくても、反証の1458は納得できるんじゃないかと(^_^;)。1つでも間違いがあったら定理じゃないですからね。
> みともさん
書き込みありがとうございます。
コンピュータの専門学校とか情報系大学の1年生の課題にうってつけかもしれません。
> Red-ipsさん
書き込みありがとうございます。
「証明した」と書いてあるだけで、証明そのものは載っていないんですよね(^_^;)。だから本を見てもわからないかも?
> sakuraさん
証明用のプログラムですが、プログラム言語って見ていて美しいと思うことがよくありますよ。まぁ、プログラマも数学者と一緒で、美しいプログラムを書こうとするあまり、使いにくいソフトが完成したりするんですけどね。(^_^;)