您的位置:首页 > 其它

一个筛选法求素数的函数

2016-03-14 16:53 239 查看
int p[MAXN],a[MAXN];  //p保存素数,a判断当前数是否为素数
void Primer()
{
int i,cnt=0,j, k;
for(i=2;i<MAXN;++i)   //i从2开始遍历
{
if(a[i]==0)    //a[i]==0说明该i是素数
p[cnt++]=i;   //cnt作为地址标志
for(j=0;j<i&&(k=i*p[j])<MAXN;++j)   //j从0开始遍历,k作为有质数p[j]的合数
{
a[k]=1;    //合数设1
if(i%p[j]==0)
break;
}
}
}


v2.0

bool notprime[MAXN];
int primes[700005]; //素数从i=1开始
void get_prime()
{
notprime[1]=true;
for(int i=2;i<MAXN;++i)
if(!notprime[i])
{
primes[++primes[0]]=i;
for(long long j=(long long)i*i;j<MAXN;j+=i)
notprime[j]=true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: