您的位置:首页 > 其它

生成质数的好方法:sieve of eratosthenes

2011-08-20 10:11 579 查看
生成n以内的质数:

易知一个整数最大质因数不会超过其算术平方根,所以只需要从1-n中

剔除1-n^0.5中质数的所有整数倍即可(质数本身除外).

n为一千万时大概只需要0.3秒多. 

bool prim
;//true为质数
void makeprim()
{
memset(prim,true,sizeof(prim));
prim[0]=prim[1]=false;
int k=sqrt(n);
int i,j;
for(i=2;i<=k;i++)
{
if(prim[i]==false)continue;//找到下一个质数进行剔除
for(j=i;j*i<n;j++)
prim[j*i]=false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: