以下の式により素数か素数でないかの判定が可能です。
なぜこの式で判定できるのか、合間を見つけて少しずつ投稿していく予定
まずは計算サイトなどで様々な素数を代入してみてください。
どんな大きな素数にも確実に反応します。素数でない数も的確に返します。
ぞろ目の非素数にもしっかり反応します。
nについては10進数の数列でもよいのですが、n進数とした方が美しくなりますのでそちらを採用させていただいております。
まずは使用する記号を記します。
10進法で書かれた数が
即ちこのことは
10進法で書かれた数が、少なくとも
といえる。
ここからは、下記の表を参照しながら進めてゆきます。
全ての末尾0は以下のように指定できる。
※当然のことのように思われると思うが必要な部分です。
例えば3進数で10進数の12を表している時3進数は110、この110は3進数において末尾0として4つ目に現れる数です。この個数4に3進数の3をかけることによって10進数の12が表せるということ。
いくつ目に現れる末尾0かということを
以上の理由より末尾0のうち、最初に現れる10は除外して考えることとする。
末尾0のうち、100は特別な数である。これはぞろ目を意味する。ここでいうぞろ目は例えば
となっている数のことである。
例えば
図1 を参照いただきたい。赤く示したラインが100ラインである。先ほど末尾0のうち10は除外して考えることを示した。したがって10を除いた末尾0には図中分かり易くするために黄色で塗りつぶしてある。
見ていただければわかると思うが黄色のセルの数は各行(横の並び)
100ラインで左右に分けると、どの行も左右同数であることがわかる。
先述で、各進数10を境にペアが存在すると記した。同様に各進数100を境にペアが存在する。図1を参照していただいて。例えば
2進数 | 3進数 | 4進数 | 6進数 | 8進数 | 12進数 | |
---|---|---|---|---|---|---|
2個目 | 20 | |||||
3個目 | 30 | |||||
4個目 | 40 | |||||
6個目 | 120 | |||||
8個目 | 220 | |||||
12個目 | 11000 | |||||
100ラインは4進数と6進数の間に存在するので、それぞれ2進数の12個目と12進数の2個目、3進数の8個目と8進数の3個目、4進数の6個目と6進数の4個目でペアができる。結局それらはすべて10進数の24を示しているので100ラインを境に重複表示しているといえる。
進数と~個目とそれぞれの示すものは違うが、これはあくまで数字の数え方の単位のようなもの、実質やっているのは単純な掛け算であるので
ということである。
各進数×~個目は約数の積である。約数の積は
もう一つ表を参照いただきたい。
a | b | c | d | e | f | |
---|---|---|---|---|---|---|
a | a^2 | ba | ca | da | ea | fa |
b | ab | b^2 | cb | db | eb | fb |
c | ac | bc | c^2 | dc | ec | fc |
d | ad | bd | cd | d^2 | ed | fd |
e | ae | be | ce | de | e^2 | fe |
f | af | bf | cf | df | ef | f^2 |
表中^2セルを境に同じ積がペアで表れている。
このことを具体的に
{表3}
1 | 2 | 3 | 4 | 6 | 12 | |
---|---|---|---|---|---|---|
1 | 1 | 2 | 3 | 4 | 6 | 12 |
2 | 2 | 4 | 6 | 8 | 12 | 24 |
3 | 3 | 6 | 9 | 12 | 18 | 36 |
4 | 4 | 8 | 12 | 16 | 24 | 48 |
6 | 6 | 12 | 18 | 24 | 36 | 72 |
12 | 12 | 24 | 36 | 48 | 72 | 144 |
^2のセルの並びを境に同じペアが2個づつ存在していることがわかる。
この素数判定公式でやりたいことは、10進数で表わされたある数
§2で見てきたことを踏まえて考えてゆく。
更に重複を考慮に入れると
先の
表の横軸を進数、縦軸を個数として考えると(1)によれば、
この表中
§2までで、調べる範囲と除外する範囲を指定した。このセクションでは冒頭で既出の式(b)の各パーツについてその意味を示してゆく。
再度式(b)を記載する。
※
準備は整ったので本題に入ります。
各進数で末尾0が現れる頻度は2進数なら2個に1つ、3進数なら3個に1つである、そしてこの後の数も同じであることは自明である。
任意の10進数
各進数最初の末尾0である10は§2で定めた除外範囲に該当するのでこのカウントから除外しなければならない。この操作は(d)式の分子を
(f)式は図1でいえば任意の進数の黄色のセルの個数の縦計である。
任意の
さて、では§2で示した範囲内で任意の
素数は1と自身以外には約数を持たないのであるから、任意の進数での特定の数を
少し具体的に見てゆこうと思う。図1を再度参照いただいて、任意の
最後の仕上げです。
(c)の等式(これが素数判定公式なのですが)の右辺第1項は説明が終わった。続いて第2項について述べるのだが、ここで素数判定公式の判定方法について述べる、なぜかといえばこれがわかれば第2項は説明さえいらない程度に容易に理解できるからである。
任意
であるならば、(図1)のように表にした場合、素数である
11が素数であることは疑いなく、当然11の横軸に黄色のセルは一つもない、
であるならば同様の範囲の
つまり素数か否か判定したい10進数の任意の数とそのひとつ前の数の黄色のセルの個数の合計を調べ、差をとると答えが0となるものは素数であると判別できるし、0以外となるものは(その数の横軸に黄色のセルが存在するということになるので)素数でないと判定できる。更に、答えが1となるものは自身と1以外に一つしか約数を持たない数、そのような数は7×7=49や11×11=121などのぞろ目であるとわかる。
以上が素数判定公式の考え方である。
従って右辺第2項は、第1項の一つ前までの数について第1項と同じく既定の範囲内で末尾0であるセルの個数を総和したものである。
第1項と第2項の差をとることにより判定は完了する。
視覚的な解説になってしまいましたが以上が素数判定公式の考え方です。
末尾0を調べることは、すべての因数について調べることと同値であることは先にも述べましたが、すべての因数を調べ、それを内包する末尾0の総和を用いた判定法に漏れや、数が大きくなると例外が出てくるということは帰納法的な観点からないといえます。