落ち着くために素数を数えると何時間かかるのか
突然ですが、みなさんは極度の緊張や、予想だにしない出来事に直面して慌てふためいた時に、どうやって落ち着きを取り戻しますか?
これは豆知識なのですが、素数を数えると落ち着くことができます。みんなやってるので、あなたもやってみてください。
明日推薦入試だ…
— HaseP@都立合格した (@perfectinfop) January 25, 2016
緊張するわぁ…
とりあえず素数を数えて落ち着こう
はあ、落ち着け落ち着け…とりあえず落ち着け。
— 諱はお絵描きをしていたい (@ruhefrieden0616) January 20, 2016
こういう時は、素数を数えて落ち着くんだ…
「素数を数えれば落ち着く」という有用な豆知識を対外的に広く伝えるために、こんなTシャツまで販売されています。
数学Tシャツ:素数を数えて落ち着くんだ! | デザインTシャツ通販 T-SHIRTS TRINITY(Tシャツトリニティ)より引用。
いや、ちゃんと説明しておくと、これは完全にネタで、実際に数えて落ち着くわけではありません。まあ、狂おしきほどの素数愛者なら、実際に数えるのかもしれませんが...
元ネタは不明ですが、ニコニコ大百科によると、「ジョジョの奇妙な冒険ストーンオーシャン」にてプッチ神父が使用したセリフとのことで、これ以降有名になったみたいです。
『落ち着け、素数を数えるんだ。』
上記台詞を漫画「ジョジョの奇妙な冒険ストーンオーシャン」にてプッチ神父が使用したことにより、慌てふためいた発言や言動に対して落ち着かせるために使用される。神父曰く、「素数は1と自分の数でしか割ることのできない孤独な数字・・・。わたしに勇気を与えてくれる」
素数とは (ソスウとは) [単語記事] - ニコニコ大百科より引用。
素数を数えるのにどれだけ時間がかかるか
ところでですよ、素数は無限に存在することが数学的に証明されています。ここで一つの疑問が生じるのですが、落ち着くために素数を数えているみなさんは、一体素数をいくつまで数えているのでしょうか?というか、常識的にいくつまで数えられるのでしょうか?
ちなみに、前述したジョジョの奇妙な冒険に出てくるプッチ神父は「19」まで数えているみたいです。素数Tシャツでは「373」まで記載されています。
ということで、計算してみましょう。
素数については、数学的には分かっていない部分が多いです。しかし、「素数定理」と呼ばれる有名な定理があって、ある数以下の素数の個数は、
で近似できることが知られています。これを使えば計算は容易です。
実際に計算してみる
簡単のため、1つの数字を0.2秒で言えることを仮定しましょう。例えば「37」という素数は、数字が2つなので、数えるのに0.4秒かかって、「1277359」という素数は、数字が7つなので、数えるのに1.4秒掛かるということです。「ひゃくにじゅうななまんななせんさんびゃくごじゅうろく」を1.4秒です。余裕ですよね?
Rでプログラムを組みました。までの素数を数えるために必要な時間を計算しています。
calcTimeInDigit <- function(x){ #オーダーがxの素数カウントの時間 if(x==0){return(4*1*0.2)} maxnum <- 10^(x+1) - 1 minnum <- 10^x - 1 cnt <- maxnum/log(maxnum) - minnum/log(minnum) time <- cnt * (x+1) * 0.2 } calcTimeToDigit <- function(x){ #オーダーがxまでの素数カウントの時間 sum(sapply(c(0:x),calcTimeInDigit)) } (sapply(c(0:10),calcTimeToDigit))
出力結果は以下のような感じ。
> (sapply(c(0:10),calcTimeToDigit)) [1] 8.000000e-01 7.779408e+00 8.163726e+01 8.344360e+02 8.434607e+03 8.487045e+04 [7] 8.521240e+05 8.545341e+06 8.563261e+07 8.577117e+08 8.588153e+09
よくわからないので表にまとめます。
x | xまでの素数を数えるのに必要な時間 | |
---|---|---|
10 | 0.80秒 | - |
100 | 7.78秒 | - |
1,000 | 81.6秒 | - |
10,000 | 834秒 | 13.9分 |
100,000 | 8,430秒 | 2.34時間 |
1,000,000 | 84,900秒 | 23.6時間 |
10,000,000 | 852,000秒 | 9.86日 |
100,000,000 | 8,550,000秒 | 3.25月 |
1,000,000,000 | 85,600,000秒 | 2.71年 |
10,000,000,000 | 858,000,000秒 | 27.2年 |
100,000,000,000 | 8,590,000,000秒 | 2.72世紀 |
指数部分を除いた仮数部が何かの値に収束しているような気がするので、解析的に計算してみると面白いかもしれません(私はやってません)。
つまり、人生最大級の緊張で、どうしても落ち着きたい場合、勢い余って100,000,000,000(1000億)までに登場する素数を全て数えてしまった場合は、2.72世紀後に数え終わり、やっと落ち着きを取り戻すということです。