数学者フェルマーの予言とか何それ?美味しいの?

スポンサーリンク

 

「数学者フェルマーの予言?」

「は?何それ、占いか何か?」

「食べれんのそれ、美味しいのそれ?」

みたいな現象がつい最近起こりました。マジ卍。

 

もしかしたら数学を専攻している方にとっては基本中の基本のことでこんなこと言うと激おこされるかもしれないのですが、

「そんなもん知らなくても生きてけるわ!ニコニコ」

みたいな問題でした。

 

 

中学生の弟が数年前に某私立高校のプログラミング教室に参加したことがあるのですが、

そのときに頂いてきたらしい問題資料がリビングにあるテーブルの妙な所から発掘されました。

 

どうやら Excel VBA を用いたプログラミング教室だったらしく VBAの練習問題として何題か末ページに与えられています。

そのうちの1題がこんな感じです。

興味があったので読んでみました。

 

数学者フェルマーは、\(n\) が自然数であるとき \( 2^{ 2^n} + 1 \) が素数であると予言したが、この予言が成立しない最小値 \(n\) を求めるプログラムを記述しなさい。

 

色々ツッコミどころはあるのですが、まあまずは

「もしかしてフェルマーおじさん暇かっ!?」

という疑問だと思うのですが違いますかね?

同じおじさんでもジャムおじさんはパムを作ったりアムパムマンを生み出したりなんかして、

何やかんやで世界の平和秩序を保っていますが一体フェルマーおじさんは何を考えてるのでしょうかね?

というかそもそも予言が成り立ってないことが問題文で発覚してますからね 。 秒で。マジ卍。

 

ただプログラムを作るうえでは素数判定の復習になって面白いなと思ったので早速書いてみることに。

ちなみにプログラムのアルゴリズムはこの記事に書いてあります。

興味がある方はどうぞ!

C++で素数判定のプログラムを実装する

2017.10.30
実行結果

 

まあこんな感じか?ってコンパイルして実行するとプログラムはすぐに終了しました。

「ん?終わり?」

自分の感覚的には結構大きい数を想定していたのですがまさかの \(n = 5 \) という結果に。

「解せぬ」とプログラムを書き直すことにしたのですがこれといったミスが思い当たりませんでした。

 

このままだと暗礁に乗り上げてしまいそうだったのでフェルマーおじさんの予言についてググってみることに。

するといい感じの記事を発見しました。

フェルマー数

 

まあまず思ったことが「フェルマー数っていうのかぁ。」

ちゃんと名前が付いていましたね。

そして僕のプログラムの動作が正しいことも判明しました。

 

とここで冷静に考えてみると与えられた数式は指数関数で爆発的に値が増加するので、

もし \(n = 5\) 以降の計算も続いていたとしたら凄まじい値の素数判定をすることになります。

考えただけでもぞっとします。マジ卍。

 

\(n = 5\) の時点で 4.29497e+009 とかいう莫大な数値の判定をしています。

ザっと40億くらいですかね?すごい。

 

ということで今回はフェルマーおじ様の偉大なる予言の誤りを C++を使って秒で確認することができました。

こうした試行をきっかけにフェルマーさんに関わる数学的定理に興味を持ったので、

また興味があればフェルマーおじ様関連の整数問題のプログラムを作って遊んでみようと思います。

 

ジャムおじさんに盛大な拍手を。拍手喝采を。

ではまた!

スポンサーリンク


ABOUT ME!

yuk!

国立大学情報学科に通う大学生です。天然パーマと戦いながらすーぱーエンジニアを目指し技術とセンスを磨いています。 室内に引きこもりがちでヘビメタと猫と甘いものが救いのキーボードカチャカチャ生活ですが、最近はブログで文章を書くことが楽しいです。モットーは「 Who dares wins. = 人生是一箇,活殺全在我。」好きな言葉は「マジ卍」。