LeetCode 204 计算质数

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

示例:

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

思路:

引入一个算法,叫 厄拉多塞素数筛选法

23d348bef930ca4bb73f749500f664ccffc5e41467aac0ba9787025392ca207b-1

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var countPrimes = function (n) {
if (n < 2) return 0;
//给所有的数值默认位false
let arr = new Array(n + 1);
let primeCount = 0;
for (let i = 2; i < n; i++) {
//如果不是质数
if (!arr[i]) {
primeCount++;
}
//循环排除所有i的倍数
//从i * 2开始,来排除
for (let j = i * 2; j < n; j = j + i) {
arr[j] = true;
}
}
return primeCount;
};