题目:
给定整数 n
,返回 所有小于非负整数 n
的质数的数量 。
思路:
使用埃式筛法
当n大于等于2时,如果当前遍历的数 i 是质数,那么从 i*i 开始,直到 n 为止,把 i 的倍数都标记为合数
代码:
class Solution {
public:int countPrimes(int n) {if(n <= 2) return 0;vector<bool> isPrime(n + 1, true);for(int i = 2; i < n; i++){if(isPrime[i]){for(int j = i; j <= n / i; j++){isPrime[i * j] = false;}}}int res = 0;for(int i = 2; i < n; i++){if(isPrime[i]) res++;}return res;}
};