素数也称质数,即恰好包含两个因子的整数。
const int maxn=1e7+10;
const int maxp=7e5;
int vis[maxn];//为1为合数,为0为素数。
int prime[maxn];
void sieve(int n){
int m=(int)sqrt(n+0.5);//避免浮点误差
memset(vis,0,sizeof(vis));
for(int i=2;i<=m;i++)
if(!vis[i])
for(int j=i*i;j<=n;j+=i)
vis[j]=1;
}
int gen_primes(int n){
sieve(n);
int c=0;
for(int i=2;i<=n;i++)
if(!vis[i])
prime[c++]=i;
return c;
}