一.题目描述:
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
二.js代码实现:
1.实现思路:
(1)如果直接判断从2到该数的方法,执行时间会超时,可以用埃拉托斯特尼筛法对质数进行筛选
(2)埃拉托斯特尼筛法,要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数
(3)要得到自然数n以内的全部素数,必须把不大于 的所有素数的倍数剔除,剩下的就是素数。
给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去
2.js代码实现:
/**
* @param {number} n
* @return {number}
*/
var countPrimes = function(n) {
if(n < 2)
return 0;
let count = 0;
for(let i = 2; i < n; i++)
{
if (i <= 3 && i > 1)
{
count++; continue;
}
if (i % 2 == 0 || i % 3 == 0)
{
continue;
}
let value = 0;
for (let j = 5; j * j <= i; j += 6)
{
if (i % j == 0 || i % (j + 2) == 0)
{
value = 2;
break;
}
}
if(!value)
count++;
}
return count;
};