示例
示例 1:
输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
示例 2:
输入:n = 0
输出:0
示例 3:
输入:n = 1
输出:0
题解
建立一个数组,长度为n,填充为1
[1,1,1,1,1,1,1,1,1,1]
从下标2开始遍历,将 2 的倍数下标都置为0
[1,1,1,1,0,1,0,1,0,1]
再遍历下标3,将 3 的倍数下标都置为0,遇到 0 直接跳过
[1,1,1,1,0,1,0,1,0,0]
直到遍历结束,筛选出数字仍然为 1 的个数,在排除掉 0 和 1 下标
/**
* @param {number} n
* @return {number}
*/
var countPrimes = function(n) {
if (n === 0 || n === 1) {
return 0
}
const list = new Array(n).fill(1)
for (let i = 2; i < list.length; i++) {
if (list[i]) {
for (let j = 2 * i; j < n; j += i) {
list[j] = 0
}
}
}
return list.filter(item => item > 0).length - 2
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-primes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。