Java エラトステネスのふるいを使って、素数を求める




今までに見つけた中で一番大きな素数は、2000万桁を超えるものらしい。
素数は無限にあるわけですが。。それにしても2000万桁ってすごいよね。

ちなみに素数ではない数は、合成数というそうな。
習ったんかもしれんが、忘れてるねぇ。

エラトステネスのふるいを使って、素数を求めるサンプル

エラトステネスのふるいを使って、素数を求めます。
とりあえず50までの範囲で。

実行結果

サンプルの解説

エラトステネスのふるいは、素数を求めるアルゴリズムです。
maxの値を変えれば、素数を調べる範囲を変えられます。

二乗が調べるしきい値になっているのがポイントで、調べる数の二乗以下は調べていません。
例えば、5の倍数でふるいにかけるときで考えると、5 x 5 = 25の二乗以下はこれら。

  • 5 x 2 = 10
  • 5 x 3 = 15
  • 5 x 4 = 20

これらの数字は、2,3,(4=2×2)の倍数でもあるので、既にチェック済み。
エラトステネスのふるいは、昇順に倍数を調べていくので、これらは調べなくて良い。ということです。
おもしろいですよね。

ちなみに、wikipediaに素数を覚えるための語呂合わせが載ってましたw
誰が考えたんかな。比較的新しそうだけど。。