素数の一覧を表示する
エラトステネスのふるいで 1000 以下の素数を求めて表示します。
前田稔(Maeda Minoru)の超初心者のプログラム入門


【エラトステネスのふるい】
- 配列を使って、エラトステネスのふるいで 1000 以下の素数を求めて表示します。
- 素数とは「2以上の1と自分自身以外に約数を持たない整数」のことを言います。
例えば13は、2でも3でも・・・7でも割り切れず、13を割りきることのできる数は、
1と13だけなので13は素数です。
15は「3*5=15」で3と5で割り切れるので素数ではなく合成数です。
- 「エラトステネスのふるい」の説明です。
エラトステネスはギリシアの博物学者で素数を見つける方法(エラトステネスの篩(ふるい))を案出しました。
また地球の形を球体と考え、その全周を推定しています。
年代は古く「紀元前 276 頃~紀元前 195 頃」で、もちろんコンピュータの面影もありません。
従って、これからの説明もコンピュータを意識したものではありません。
この考え方をコンピュータに適合するようにプログラムして下さい。
- step 1: 2からnまでのすべての整数を「ふるい」に入れる
- step 2: 「ふるい」に入っている数の中で最小の数を取り出し「素数」に加える。
- step 3: この数の倍数を全て「ふるい」から除く。
- step 4: 「ふるい」が空になるまで、step 2,3 を繰り返す。
- この考え方に基づいて 1000 までの素数を表示して下さい。

プログラムの説明
- プログラムの構成を考えて見ましょう。
tbl が1000以下の素数を求める配列です。
ここに2~1000の値を格納します。(0と1は素数で無いので無視)
int[] tbl = new int[1000];
|
- テーブルに格納されている最初の値「2」は素数です。
素数が見つかれば、その倍数をテーブルから取り除きます。
2のときは「4,6,8,・・・1000」を取り除きます。
プログラムでは、取り除く代わりにゼロを格納します。
- 次に見つかる値は「3」なので「6,9,12,・・・999」を取り除きます。
- 4は2の倍数として取り除かれているので、次の値は「5」なのでその倍数を取り除きます。
- 幾らまで調べれば良いのでしょう。
今回求めるのは1000までなので、1000の平方根(約33)まで調べればOKです。
何故ならば、もし1000を割り切る値「n*m=1000」が存在するならば、nとmのどちらかは
33より小さいからです。
- 説明したことをヒントにしてプログラムを作成して下さい。
- 1000までの素数の数は168個です。
「168個の数字を一行に10個ずつ」並べて表示してみましょう。

前田稔(Maeda Minoru)の超初心者のプログラム入門

※・