ことばにならないなにか

「ことばにならないなにか」を言葉で近似するそんな試み

落ち着くために素数を数えると何時間かかるのか

突然ですが、みなさんは極度の緊張や、予想だにしない出来事に直面して慌てふためいた時に、どうやって落ち着きを取り戻しますか?

これは豆知識なのですが、素数を数えると落ち着くことができます。みんなやってるので、あなたもやってみてください。


素数を数えれば落ち着く」という有用な豆知識を対外的に広く伝えるために、こんなTシャツまで販売されています。

http://www.ttrinity.jp/_img/product/17/17686/1469482/1630580/3924984/product_img_f_3924984.jpg
数学Tシャツ:素数を数えて落ち着くんだ! | デザインTシャツ通販 T-SHIRTS TRINITY(Tシャツトリニティ)より引用。


いや、ちゃんと説明しておくと、これは完全にネタで、実際に数えて落ち着くわけではありません。まあ、狂おしきほどの素数愛者なら、実際に数えるのかもしれませんが...

元ネタは不明ですが、ニコニコ大百科によると、「ジョジョの奇妙な冒険ストーンオーシャン」にてプッチ神父が使用したセリフとのことで、これ以降有名になったみたいです。

『落ち着け、素数を数えるんだ。』

上記台詞を漫画「ジョジョの奇妙な冒険ストーンオーシャン」にてプッチ神父が使用したことにより、慌てふためいた発言や言動に対して落ち着かせるために使用される。神父曰く、「素数は1と自分の数でしか割ることのできない孤独な数字・・・。わたしに勇気を与えてくれる」

素数とは (ソスウとは) [単語記事] - ニコニコ大百科より引用。

素数を数えるのにどれだけ時間がかかるか

ところでですよ、素数は無限に存在することが数学的に証明されています。ここで一つの疑問が生じるのですが、落ち着くために素数を数えているみなさんは、一体素数をいくつまで数えているのでしょうか?というか、常識的にいくつまで数えられるのでしょうか?

ちなみに、前述したジョジョの奇妙な冒険に出てくるプッチ神父は「19」まで数えているみたいです。素数Tシャツでは「373」まで記載されています。

ということで、計算してみましょう。

素数については、数学的には分かっていない部分が多いです。しかし、「素数定理」と呼ばれる有名な定理があって、ある数{x}以下の素数の個数{\pi(x)}は、

{ \displaystyle
\pi(x)=\frac{x}{\log(x)}
}

で近似できることが知られています。これを使えば計算は容易です。

実際に計算してみる

簡単のため、1つの数字を0.2秒で言えることを仮定しましょう。例えば「37」という素数は、数字が2つなので、数えるのに0.4秒かかって、「1277359」という素数は、数字が7つなので、数えるのに1.4秒掛かるということです。「ひゃくにじゅうななまんななせんさんびゃくごじゅうろく」を1.4秒です。余裕ですよね?

Rでプログラムを組みました。{10^n(n=1,\ldots,11)}までの素数を数えるために必要な時間を計算しています。

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世紀後に数え終わり、やっと落ち着きを取り戻すということです。

みなさんも数えてみましょう

ちなみに、10,000,000(1000万)までに登場する素数は、以下のサイトから閲覧できます(やや重いです)。

素数一覧(〜1000万)

これを全て数えると、9.86日掛かるという計算になります。さあ、みんなで素数を数えて落ち着きましょう!