class Solution {
public:
int countPrimes(int n) {
vector<bool> isprime(n,true);
int count=0;
for(int i = 2;i*i < n; ++i){
if(isprime[i]){
for(int j = i*i;j < n;j += i){//使用j += i实现了i的倍数的排除
isprime[j] = false;
}
}
}
for(int i=2;i <n ;i ++){
if(isprime[i])
count++;
}
return count;
}
};
本文介绍了一种高效的素数计数算法,通过埃拉托斯特尼筛法的优化实现,能够在给定范围内快速找出所有素数。算法首先创建一个布尔型数组标记所有数字为潜在素数,然后遍历数组,将已知素数的倍数标记为合数,最终统计剩余的素数数量。
183

被折叠的 条评论
为什么被折叠?



