スクリーニング法を使用して100以内の素数を見つける(スクリーニング法!!!)

#include <stdio.h> 
#include <math.h>
 int main()
{ 
    int a [ 101 ]、i、j; 

    for(i = 1 ; i <= 100 ; i ++ 
    { 
        a [i] = i;    // 初期値を配列に割り当てます
    } 
    a [ 1 ] = 0 ; // [1] 

    削除します(i = 2 ; i <sqrt(100); i ++)   // 1〜nの範囲の素数を見つける必要がある場合テーブルはルート番号n(整数を取る)
    {
         for(j = i + 1 ; j <= 100 ; j ++ で除算する必要があるだけですif(a [i]!= 0 && a [j]!= 0 if(a [j]%a [i] == 0 
                { 
                    a [j] = 0 ; 
                } 

    } 

    printf(" \ n " );
    int n; 

    for(i = 2、n = 0 ; i <= 100 ; i ++ 
    { 
        if(a [i]!= 0 
        { 
            printf(" %5d " 、a [i]); 
            n ++; 
        } 

        if(n == 10 
        { 
            printf(" \ n " ); 
            n = 0 ; // 1回の完了後に初期化
        } 
    } 


    return  0 ; 
}

 

いわゆるふるい分け法は「エラトセンふるい法」で、一組のデータを一つずつ素数かどうかを判断し、素数でないものが見つかったらそれを掘り出して、最後に素数です。

アルゴリズムは次のように表すことができます。

(1)掘り出す1;

(2)次の数pを次の掘り出されていない数pで割り、pの倍数を掘り出す

(3)pがルート番号nの整数部分よりも小さいかどうかを確認します。小さい場合は(2)を返し、実行を続行します。それ以外の場合は終了します。

(4)残りは素数

 

おすすめ

転載: www.cnblogs.com/18191xq/p/12738216.html