统计所有小于非负整数 的质数的数量。

示例:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

 

class Solution {
public:
    int countPrimes(int n) {
        vector<bool> f(n, false);
        
        for (int i = 2; i * i <= n; ++i)
        {
            if (!f[i])
            {
                for (int j = i * i; j < n; j += i)
                    f[j] = true;
            }
        }
        
        int cnt = 0;
        for (int i = 2; i < n; ++i)
        {
            if (!f[i])
                cnt++;
        }
        return cnt;
    }
};