204. 计数质数
统计所有小于非负整数 n 的质数的数量。
质数统计虽然是个简单的题目,但是如果不了解数学的意义还是有点难处理的,下面是枚举法的C++代码:
class Solution {
public:
int countPrimes(int n) {
int res=0;
for(int i=2; i<n; i++)
{
res+=isPrime(i);
}
return res;
}
bool isPrime(int num)
{
for(int i=2; i*i<=num; i++)
{
if(num%i==0) return false;
}
return true;
}
};
运行效果(勉强通过):
用埃氏筛算法进行求解(Python代码):
class Solution:
def countPrimes(self, n: int) -> int:
isPrime=[1 for _ in range(n)]
i,res=2,0
while(i<n ):
if(isPrime[i]):
res+=1
if i*i<n:
for j in range(i*i,n,i):
isPrime[j]=0
i+=1
return res
运行效果(明显优于枚举法):
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-primes