[力扣刷题]204. 计数质数
统计所有小于非负整数 n 的质数的数量。
1.暴力法超时
2.素数筛
思路:用额外bool数组存每个数是否需要判断标记,若发现一个质数,则其倍数全都不需要再进行判断。
class Solution {
public:
int countPrimes(int n) {
if(n < 3) return 0;
vector<bool> isPrime(n + 1, true);
for(int i = 3; i * i < n; i += 2)
if(isPrime[i])
for(int j = i; j * i <= n; j += 2)
isPrime[j * i] = false;
int cnt = 1;
for(int i = 3; i < n; i += 2)
cnt += isPrime[i];
return cnt;
}
};