素数筛选的方法-----埃拉托斯特尼筛法

求N=1000000 内的质数 

#include <stdio.h>
#include<string.h>
#define maxn  10000010
int n,ans=0,a[maxn];
bool b[maxn];
int main ()
{
    scanf("%d",&n);
    memset(b,1,sizeof(b));
    b[0]=0;
    b[1]=0;
    for(int i=2;i<=n;i++)
    {
        if(b[i]==1)
        {
            a[ans++]=i;
            for(int j=i*2;j<=n;j+=i)
            b[j]=0;
        }
    }
    for(int i=0;i<ans;i++)
    printf("%d\n",a[i]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41932243/article/details/82726766