【题目描述】
Description:
Count the number of prime numbers less than a non-negative number, n.
【思路】很经典的题目,计算n之内有多少个素数,不过题目有时间要求,一开始用原始做法直接TLE了,现在代码中判断素数的方法是最为经典的,要牢牢记住。
【代码】
class Solution {
public:
int countPrimes(int n) {
int cnt=0;
bool prime[n];
for(int i=2;i<n;i++){
prime[i]=true;
}
for(int i=2;i*i<n;i++){
if(!prime[i]) continue;
for(int j=i*i;j<n;j+=i){
prime[j]=false;
}
}
for(int i=2;i<n;i++){
if(prime[i]) cnt++;
}
return cnt;
}
};
本文介绍了一种优化后的算法来计算指定非负整数n内有多少个素数,通过改进的筛法避免了传统的直接遍历检查每个数是否为素数导致的时间复杂度高问题。
186

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



