目录

LC 204. 计数质数 (opens new window) (opens new window)

中等

# 问题描述

给定整数 n ,返回所有小于非负整数 n 的质数的数量 。

示例 1:

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

示例 2:

输入:n = 0
输出:0

示例 3:

输入:n = 1
输出:0

提示:

  • 0 <= n <= 5 * 106

# 埃氏筛

埃拉托斯特尼筛法 (opens new window)

/**
 * @param {number} n
 * @return {number}
 */
var countPrimes = function (n) {
  const isPrimes = new Array(n).fill(true)
  let ans = 0
  for (let i = 2; i < n; i++) {
    if (isPrimes[i]) {
      ans++
      for (let j = i * i; j < n; j += i) {
        isPrimes[j] = false
      }
    }
  }
  return ans
}
  • 时间复杂度:O(nloglogn)O(n\log{\log{n}})
  • 空间复杂度:O(n)O(n)
上次更新: 2023/01/31 19:48:05

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!