您的位置:首页 > 其它

LeetCode OJ:Count Primes(质数计数)

2015-10-06 22:17 507 查看
Count the number of prime numbers less than a non-negative number, n.

计算小于n的质数的个数,当然就要用到大名鼎鼎的筛法了,代码如下,写的有点乱不好意思。

class Solution {
public:
int countPrimes(int n) {
vector<int> vtor(n + 1, 0);
vector<int> ret;
for (int i = 0; i <= n; ++i)
vtor[i] = i;
for (int i = 2; i < n; ++i){//边界条件注意
if (vtor[i] != -1){
ret.push_back(vtor[i]);
int tmpPrime = vtor[i];
for (int mul = 1; tmpPrime * mul <= n; mul++){
vtor[tmpPrime * mul] = -1;
}
}
}
return ret.size();
}
};


java版本的代码如下所示:

public class Solution {
public int countPrimes(int n) {
int [] prime = new int[n+1]; //这里其实用boolean更好,懒得改了
int count = 0;
for(int i = 0; i < n+1; ++i){
prime[i] = i;
}
for(int i = 2; i < n+1; ++i){
if(prime[i] == -1)
continue;
else{
count++;
for(int mul = 2; mul * i < n+1; ++mul){
prime[mul*i] = -1;
}
}
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: