筛法构造1~n的素数表

 

#include <iostream>

#include <cmath>

#define Ni 10000000

using namespace std;

int prime[Ni];

bool vis[Ni];

int Prime(int n)//筛法构造1~n的素数表(反回有多少个素数)

{

    int i,j,c=0;

    memset(vis,0,sizeof(vis));

    for(i=2;i<=n;i++) if(!vis[i])

    {

        prime[c++]=i;

        for(j=i*i;j<=n;j+=i) vis[j]=1;

    }

    return c;

}

int main()

{

    int i,n,m;

    cin>>n;

    m=Prime(n);

    for(i=0;i<m;i++)

    {

        cout<<prime[i]<<' ';

    }

    cout<<endl;

}

 

你可能感兴趣的:(素数)