四季一筆

徒然に。

皐月二十九日、素数が好きな理由

小学生の頃に好きだった数字は、2とか4とか5というような「カチッとした数字」だった。ちょうど、ミニ羊羹のような、と言えばわかるだろうか(わかるわけないか)。小さくて、充填式で、手のひらサイズの四角いビニール製の包装にみっちりと入って直方体に出来上がっている羊羹だ。
 
ところが大人になったら素数が好きになっていた。たぶん、プログラムを書くことが生業となってからだと思う。
 
◇ ◇
 
理系は素数が好きとか、プログラマ素数にこだわるとか、東工大生には素数愛があるとか言われてるみたいだけど(だよね?)、ともかく日常生活で素数が気になる。何か好きな数字を上げろと言われると17とか19とか言っている。
 
温泉とか行って空いているロッカーを探すときにも37とか41とか選んでしまう。近所のスーパーに自転車で行って駐輪場のロックに前輪を「ガッコン」と入れるときも、23とか29だと嬉しくなる。
 
日常生活で素数が気になるので素数判定のツールを作ってしまった。ただし最大15485863までだ。キリがないから。まあ、日常生活ならこれで足りるだろう。
 
▼prime number checker
http://www.tafworks.com/prime_num_chckr/
 
実はこれ、秘密のメアドに数字を送ると、判定結果を即座に返信してくれるという機能もつけたんだけど、それは内緒。ガラケーでも素数判定ができる。
 
◇ ◇
 
で、話戻るけど、どうしてこんなに素数が気になるんだろう、4とか9とか32、144なんて酷くシドケなく感じるのはなぜなのかと、ずっと思ってきた。前出の「理系は」とか「プログラマは」というので納得しようとしていたのだろうけど、この一年間、息子の塾の算数に付き合ってきて、その理由がわかった気がした。腑に落ちたというか、納得できたような気がする。
 
すべての数は、素数であるか、素数からできているのだ。
 
つまり、素数というのは1より大きい自然数すべての構成材料なのだ、ということ。でも、それだったら、1だろうと2だろうと3だろうと、足したり掛けたりすれば何かの数字になるから条件としては同じじゃないか、と思われるだろう。
 
何が違うのか。
 
それは、ある数を素因数分解して得られるのが素数だということだ。そこがグッとくるところなのだ、と気づいた。つまりそれは、プログラムで言うというところの関数とかサブルーチンというもの、それを見つけて定義するところに肌触りがすごく似ているのだ、ということだった。
 
クライアントの要望を聴きながら、作業手順をプログラムに落とし込むところなんて、連除法をやっているような感覚だ。
 
◇ ◇
 
プログラマは、同じことを繰り返すのが嫌いな人種だ。延々と同じことを繰り返すような作業には憎悪とか殺意とかを抱く。そしておもむろにテキストエディタを開く。
 
作業で繰り返される同じところは、括り出して名前をつけて、必要なときにその名前を呼べばいいだけにしておきたがる。いってみれば、それは「論理の素因数分解」のようなもの。このような一種の「まとめ感覚」が、素数に通じている。
 
すべての関数は互いにユニークかつ簡潔で、それはまさに素数の性質そのものだ。
 
◇ ◇
 
ということで、大したことでもないけど、長年抱いてきた疑問が解消したのは、息子の塾通いのおかげだった。