用倍数筛除法去除所有已知质数的倍数。最高效的容器是bool型的vector
vector<bool>q(n,true);
for (x=2; x<=sqrt(n); x++)
{
if (q[x]==false) continue;
for (int i=2; x*i<n; i++)
q[x*i]=false;
}
然后检查从2到n-1里仍然标记为true的元素数目。
注意,x的判断范围是从2到sqrt(n)即可,不需要遍历到n。
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
用倍数筛除法去除所有已知质数的倍数。最高效的容器是bool型的vector
vector<bool>q(n,true);
for (x=2; x<=sqrt(n); x++)
{
if (q[x]==false) continue;
for (int i=2; x*i<n; i++)
q[x*i]=false;
}
然后检查从2到n-1里仍然标记为true的元素数目。
注意,x的判断范围是从2到sqrt(n)即可,不需要遍历到n。