「マイナンバーは素数だ!」発言の危うさ
マイナンバーキタ━ヽ( ゚∀゚)ノ┌┛)`Д゚)・;'━!!
やったー!チェックディジットを除けば素数だ!(この情報量は何ビットになるか計算せよ)
— Haruhiko Okumura (@h_okumura) 2015, 11月 23
この世には素数に異常な執着をもつ人がいる。マイナンバーも素数ならばきっとうれしくなってしまうのだろう。 しかし、マイナンバーが素数であることをTwitterなどのSNSで公言するのは果たしてどれだけ危うい行為であるのかを求めてみたい。
素数の個数、密度
自然数の集合に素数がいくつ含まれているのか、という問題は紀元前3世紀ごろにEuclidが『原論』にて述べている事実である。 しかし、この証明からは素数がどのように分布しているのかという情報は全くない。 素数の分布に関する重要な定理として素数定理が知られている(トートロジーめいた発言)。 18世紀にGaussやLegendreが予想し、PoussinとHadamardがそれぞれ独立に証明した。
素数定理の詳しい説明は適当な専門書を見てもらうこととして、を以下の素数の個数を表す函数とすると、 と近似できることが素数定理からわかる。 また、以下の自然数に含まれる素数の割合はとなる。
漏洩する情報量
マイナンバーは11桁の自然数から一様な確率で選ばれると仮定し、また、11桁に満たない場合は0でパディングすると仮定する。 すると、マイナンバーが素数となる確率は素数の密度からとなる。 よって、「マイナンバーは素数だ!」発言の情報量はとなる。
Pythonで計算すると、
>>> import math >>> help(math.log) Help on built-in function log in module math: log(...) log(x[, base]) Return the logarithm of x to the given base. If the base not specified, returns the natural logarithm (base e) of x. >>> math.log(11 * math.log(10), 2) 4.66268609133702
より、「マイナンバーは素数だ!」発言の情報量は約5ビットとなる。
…で、危ういの?
5ビットの情報量がどれだけ危険なのかは僕には判断できない。 しかし、些細な発言でも情報が漏洩するという事実は知っておくべきである。