先日、知人に一枚の写真が送られてきた。

    彼が読んでる本に、Googleの有名な入社問題が紹介されているらしい。君にはこの問題が解けるかと。自身はなかったけど、チャレンジしたくなってきた。もちろん、自力で解いてみせようと。

ちなみに、この問題を時、その答えである数列をURLに入力するとGoogleの入社フォームが出てきたらしい。その後、追加問題をいくつ解いた人には、ほとんど入社が認められたらしい。

まず、問題を見てみよう。

{First 10-digit prime found in consecutive digits of e}

自然対数eの連続する桁で、最初に出てくる10桁の素数

なるほど。まず、eを探してみよう。すぐその数列が掲載されているサイトを見つけることができた。この問題が出された10数年前にも、eの数列をネット検索で探すのはそれほど難しくなかっただろう。

https://www.math.utah.edu/~pa/math/e.html

解き方のアルゴリズムを下記に記す。実に簡単である。

(1) こちらのeの数字で連続する数列を作成する。

(2) e=2.71828 18284 59045 23536であるから、

  最初は、71828 18284を取り出し、素数であるかどうかを調べる。

  次に、一桁移動し 1828 18284 5と取り出し、素数であるか調べる。

(3) 素数であると判断した場合、その値を出力する。

案外簡単ですね。しかし、(1)と(2)にちょっとだけのプログラミングのテクニックが必要である。ここでは、慣れているMATLABを用いて、プログラムを書くことにした。

MATLABプログラムは、下記のリンクににアップロードした。mainのプログラム(making_e_number_10keta.m)と素数判別プログラム(myprime2.m)の2つのファイルで構成されている。

http://wireless-square.com/wp-content/uploads/2018/11/google_problem.zip

計算は、2018年仕様のデスクトップだと数分で出てくる。10数年前だとPentium 4の時代だから、結果がでるまで1時間以上かかったと思う。

答えの最初の10桁の素数は7427466391である。

連続して出力すると、このように10桁の素数が見つかる。

this is the prime number


7427466391

7413596629

6059563073

この問題が本当に意味しているのは、無限数の概念である。今回は10桁の素数を探す問題であったが、例え「11桁の素数」を探そうとしても、必ずその答えが出てくることはわかっている。問題を「100桁の素数」と置き換えても、自然対数eの中のどこかから必ず出てくるはず。

今度は、このように問題を変えてみよう。

芥川龍之介の「羅生門」の全文を10進数を数字に変換する。ここで、自然対数eの連続する桁で、「羅生門」の全文と一致する数列があるか探そうとする。これはかなり大変な計算になるが、その数列は必ず存在する

これが無限数の概念である。実に面白い。

Similar Posts

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください