うえぽんSW局

古いタイプの日記ブログです。気まぐれに更新してます。

タグ:素数

 久しぶりのブログ更新です。ブログを更新していなかった間ですが、素数を探してました。

 1
 12
 123
 1234
 12345
 123456
 1234567
 12345678
 123456789
 1234567890
 12345678901
 123456789012
 1234567890123
 :
 :
 となる数列から素数を探すということをやってました。

 まず最初はJavaScriptやC言語で探そうとしましたが、せいぜい10進で20桁までしか計算できないために素数は発見できませんでした。
 そこでpythonで計算することにしました。pythonで扱える整数には桁数の制限はありません。

 で、pythonで作ったプログラムによって以下の桁数で確率的素数(PRP)であることを発見しました。
 171桁
 277桁
 367桁
 561桁
 567桁

 まだまだここで終了しません。これ以上の桁数にも素数がないかと続行します。
 しかしここで新しい壁に衝突しました。計算にかなりの時間がかかるようになってきました。pythonでは1000桁までの計算がせいぜいのようです。
 そこで1000桁以上ではC言語でGNU Multi-Precision Library(GMP)を使うことにしました。

 で、なんとか18881桁が確率的素数(PRP)であることを発見できました。
 確率的素数(PRP)と言いますが、ミラー・ラビン素数判定法で乱数を100回テストしてもパスしています。かなりの高い確率で素数だと思われます。

 これ以上の桁数でも素数はあるのかと現在12万桁までテストしていますが、まだ見つかっていません。
 他にも計算速度アップのために色々と工夫しましたが、今回は取り急ぎの更新のため以上です。


【まとめ】
 1234567890123456……と続く数列で確率的素数(PRP)となるのは以下の通り。
 171桁
 277桁
 367桁
 561桁
 567桁
 18881桁
 これ以降は12万桁までテストしたもののみつからず。
このエントリーをはてなブックマークに追加

 下手の横好きでありますが、たまに数学のことを考えたりします。
 ここ最近はゾロ目の素数はないかと考えていたのですが、そうしたらタイトルのような発見をしました。
 以下は、その解説を雑学風に箇条書きにしたものです。

ゾロ目の素数は存在する。
最小は11。



ゾロ目の素数はレピュニット素数と呼ばれている。



レピュニット素数は1のゾロ目以外は存在しない。
1以外だと1のゾロ目の倍数になるため。
2222… = 2 * 1111…
3333… = 3 * 1111…
4444… = 4 * 1111…
5555… = 5 * 1111…



11の次のレピュニット素数は1111111111111111111。1の数は19個。
以降は23個、317個、1031個が素数になることが判明している。
さらに49081個、86453個、109297個、270343個も“おそらく”素数とみられているが、桁数が多すぎて素数だと“確定”するのは困難とされる。



レピュニット素数は1の個数も素数になる。
個数が合成数(素数以外)だと簡単に約数を見つけられるからである。
例えば12個(3*4個)の場合は次のように筆算の要領で因数分解できる。

容易に因数分解



1111111111111111111(1が19個)は十進法だけでなく二進法でも素数。



二進法でゾロ目になる素数はメルセンヌ素数と呼ばれる。
これも1の個数は素数個となる。



今現在において、二進法でも十進法でも素数となるゾロ目は、
11と、1111111111111111111(1が19個)の二つしか発見されていない。

※ゾロ目でないのならもっとある。



■参考
 レピュニット - Wikipedia
 メルセンヌ数 - Wikipedia
このエントリーをはてなブックマークに追加

 最近、素因数分解に興味を待ち、JavaScriptによる素因数分解のプログラムを作っていたりします。
 素因数分解は桁数が増えるごとに計算量が増え、解くのが難しくなることから暗号にも使われていて云々、というのは有名だと思います。

 で、高速に解くためには様々なアルゴリズムがあるわけですが、今回は「ポラード・ロー素因数分解法」というのを試しています。このアルゴリズムについてはWikipediaで説明されています。
 ポラード・ロー素因数分解法 - Wikipedia

 さて、上のwikipediaは読んでもよく分からなかったりします。これに限らずWikipediaは難しくてよく分からないものが多いです。
 そこで個人的にこのように解釈してみました。

Pollard's rho algorithm

 たぶん根本的な原理はこれで間違いないはず。

 これ以上のことは以下のサイトがとても参考になります。
 ρ法 @ 素因数分解 @ IDM
このエントリーをはてなブックマークに追加

↑このページのトップヘ