第3話 素数探索はいかにしたらマルチ化できるか?
素数にはとても面白い性質があります。
素数を例えば5で割った余りで分類するとします。
5以外の素数は、5で割ったときの余りが
1の場合、2の場合、3の場合、4の場合
の4つの場合に分かれます。
5以外の素数を
2,3,7,11,13,17,19,23,29,31,・・・
5で割っていくとそれぞれの余りは、
2,3,2,1,3,2,4,3,4,1,・・・
ですね。
ですから、
5で割ったときの余りが1のグループ・・・11,31,41,61,・・・・
5で割ったときの余りが2のグループ・・・2,7,17,37,・・・・
5で割ったときの余りが3のグループ・・・3,13,23,43,・・・・
5で割ったときの余りが4のグループ・・・19,29,39,59,・・・・
と、5以外の素数を4分類することが出来るわけです。
では、4グループの素数の現れる割合は、
異なるのでしょうか。
実は、どのグループにも全く同じ頻度で素数が現れるのです。
今は、5で割った余りで分類しましたが、
7で割って6分類することも出来ます。
この6分類にも素数は、同じ割合で登場します。
さらに、
11で割って10分類しても同じ割合で素数は現れます。
17で割って16分類しても同じ割合で素数は現れます。
19で割って18分類しても同じ割合で素数は現れます。
・・・
・・・
・・・
1999993で割っ余て、1999992分類しても同じ割合で素数は現れます。
(神は1999992面をもつサイコロを振って、素数を割り振っているのです。)
・・・
・・・
・・・
どの分類にも同じ割合で素数が現れる・・・
これは、割る数をいかに大きくしていっても成り立つのです。
皆さん、お気づきですね。
分類するときに割る数は!?
3,5,7,11,13,17,19,・・・・
そうです。
素数です。
ということは、
6スレッド化するには、素数を
7で割ったときに余りが1になる素数、
7で割ったときに余りが2になる素数、
7で割ったときに余りが3になる素数、
7で割ったときに余りが4になる素数、
7で割ったときに余りが5になる素数、
7で割ったときに余りが6になる素数
に6分類し、
それぞれの分類をそれぞれのスレッドに探索させれば、
6スレッド探索が可能になります。