您的位置:首页 > 其它

Count Primes

2015-06-10 22:22 225 查看
数出小于n的质数个数。本人自己写只能想到双循环n方的逻辑,老是超时,只能网搜。发现一个叫什么什么的方法挺不错,简单易懂还是线性时间度,不过空间复杂度可能会大要用到bool
,为n。原理大致是从2开始到n-1凡是2倍数就标记false,3同理,以此类推,自然bool
剩下为true的就是质数了。

代码如下:

int countPrimes(int n) {
int result = 0;
bool primes
;
memset(primes, true, sizeof(bool) * (n));
primes[0] = false, primes[1] = false;

for (int i = 2; i < sqrt(n); i++) {
if (primes[i]) {
for (int j = i * i; j < n; j += i) {
primes[j] = false;
}
}
}
for (int i = 0; i < n; i++)
if (primes[i])
result++;

return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: