興味深い数学難問
ネットでは数学オリンピックや大学入試で出題された数学の問題がいくつも紹介されています。
そして、年明け早々、シンプルながら手強い問題に出会いました。
その難問とは…
問題の趣旨を具体的な数字を入れて示すと、
X=3、Y=−2、Z=1 のとき
この場合は、式の値が20になっていますが、冒頭の問題は33になるX,Y,Zを求めよということです。
適当に数値を代入してみると、
惜しい!
1時間もあれば正解が見つかりそうな感じですが…
⌛️(30分経過)
解けません。目の子で探していたのでは難しそうです。
パソコンで探索
パソコンでマクロを組んで、とりあえず2桁以下の整数について、しらみつぶしに探索してみることにします。(X,Y,Zにそれぞれ−99〜99の整数を入れた組み合わせを全て調べる。組み合わせの数は、199x199x199/6 通り)
この程度のプログラムはCで書くほどでもないのでBASICのForNext構文を再帰的に使ってプログラムを書いて走らせてみると…
結果は…
2桁以下の整数解がない!
約130万通りの組み合わせの中には33になるものがありませんでした。(20や34はすぐ見つかるのに不思議です)
そして、判明したことは、
もし、正解があるとすれば、
(1)X.Y.Zのうち1つまたは2つは負の整数でなければならない。
(2)X.Y.Zのうち少なくとも一つは3桁以上の整数。
プログラムの改良
3桁以上の整数を調べるには、先ずできるだけ整数を絞り込んでから(例えば、33が奇数であることより変数に偶奇の制限があるなど)、パソコンを用いた力技で再検討しよう!
だけど、数が大きくなると、インタープリタ方式のプログラム言語であるBASICでは処理が遅すぎます。
実行速度の早いプログラム言語に変更します。
ということで、ソースプログラムをCで書いてコンパイルしてから計算を実行しました。
⌛️(100分経過)
解が見つかりません。
100分間の計算では、3桁以上の整数解はみつかりませんでした。
そして、断念😓
解答は?
問題に解答が併記されていないのでネットで解答を探します。
20分ほど探索するも見つからずその日は終了。
翌日、「数の話」というサイトで正解を発見!
《「ある整数を3乗した数を三つ足して1〜100までの数を全て作る」という問題で、33は42と共に難解な問題》とのことでした。
その解答を見て…
正しい答えかどうかを検証することすら不可能な数字です😱
その驚愕の解答とは…
正解に示された16桁の3つの整数(負の数を含む)に到達するには、10の100乗程の組み合わせを調べる必要があります。
大型コンピューターの演算能力を以てしても厳しいレベルです。
んんん… この巨大な数字の解答はどのようなアルゴリズムを用いて見つけられたのだろう?
また、正解となるXYZの組み合わせは 有限個なのだろうか?
謎です😨