给定整数 n ,返回 所有小于非负整数 _n_ 的质数的数量
示例 1:

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

示例 2:

  1. 输入:n = 0
  2. 输出:0

示例 3:

  1. 输入:n = 1
  2. 输出:0

提示:

  • 0 <= n <= 5 * 10^6

    解法一:模拟

    ```typescript function countPrimes(n: number): number { let res = 0 if (n > 2) {
    1. res ++
    } for(let i = 3; i<n;i+=2) {
      if (isPrime(i)) {
          res++
      }
    
    } return res };

function isPrime(n:number): boolean { for (let i = 3; i <= Math.floor(Math.sqrt(n));i+=2) { if (n % i === 0) { return false } } return true }

<a name="w9uEX"></a>
## 解法二:埃氏筛
```typescript
function countPrimes(n: number): number {
    let ans = Array(n).fill(1)
    let res = 0
    for (let i = 2;i  < n; i++){
        if (!ans[i]) {
            continue
        }
        res++
        for (let j = i * i; j < n; j += i) {
            ans[j] = 0
        }
    }
    return res
}