Count Primes

Description:

Count the number of prime numbers less than a non-negative number, n.


题目 Count Primes



计算小于n的全部素数的总数。

用一般的方法超时,应该用筛选法求素数 ,參考 筛选法求素数

class Solution {
public:
       
    int countPrimes(int n) {
        int* a = new int[n]();
        int ans = 0;
        int m = sqrt(n);
        for (int i = 2;i <= m;i++) {
            if (!a[i]) {
                for (int j = i * i;j < n;j = j + i) a[j] = 1;// 标记因子为i的合数
            }
        }
        
        for (int i = 2;i < n;i++){
            if (!a[i]) ans++;
        }
        
        return ans;
    }
};