埃式筛法

埃式筛法其实是把n以内的合数全部去掉,剩下的就是素数了。

int a[100005];
int b[100005];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<=n;i++) b[i]=1;//将所有的数先全部看成素数
    b[0]=0;//去除1和0
    b[1]=0;
    int p=0;
    for(int i=2;i<=n;i++){
        if(b[i]){
            a[p++]=i;
        }
        for(int j=i*2;j<=n;j+=i) b[j] = 0;
    }
    for(int i=0;i<p;i++) printf("%d\n",a[i]);


    return 0;

}

关键是第二层这个循环 第一次循环把2的整数倍的数去掉(2除外) 然后i++后 再把3的整数倍去掉(3自身除外)...... 一直操作下去

猜你喜欢

转载自blog.csdn.net/qq_40620465/article/details/88728509
今日推荐