筛法构造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; }