筛法构造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;
}
原文地址:https://www.cnblogs.com/qijinbiao/p/2383795.html