|
|
2〜Nまでの整数の中から、素数を求めるとする。 「エラトステネスのふるい」のアルゴリズムは下のようになる。 (1) 2〜Nの数をすべて「ふるい」に入れる。 ![]() (2) 「ふるい」の中で最小数を素数とする。 ![]() (3) 今求めた素数の倍数をすべて「ふるい」からはずす。 ![]() (4) (2)〜(3)を Nの平方根までくり返し「ふるい」に残った数が素数である。
実際にプログラムを作る時には、「ふるい」として 配列を用意して、2〜Nの数をその配列「ふるい」に入れる。「ふるい」からはずす操作をその配列要素を0とすることにする。そして、配列要素が0ではないときにその配列要素を書き出せば、素数を書き出すプログラムになる。 これの流れ図を書いてみると次のようになる。 まずは、配列に2〜Nの整数を入れる。 ![]() そして、配列のなかで2からNの平方根までの倍数のところの配列要素を0に置き換えていく。 ![]() ここで、一度素数じゃないと決めた配列については、再び判断を行わないように、IF文を使ってDOループを飛び越している。 注意! DOループの用いると書いていますが今回のプログラム例はFOR文を用いてループを回しています、これ以外にも改良の余地は十分あるので自分で考えてみてください。 |