统计质数javascript

ThinkPhpchengxu

温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!

统计质数javascript

质数是指大于1且只能被1和自身整除的整数。在编写JavaScript代码时,我们可以使用一些算法来统计给定范围内的质数。

一种常见的算法是埃拉托斯特尼筛法(Sieve of Eratosthenes),该算法通过不断筛选掉非质数来找到质数。具体步骤如下:

1. 创建一个长度为n+1的布尔数组isPrime,并将所有元素初始化为true。数组的下标表示数字,数组的值表示该数字是否为质数。

2. 将isPrime[0]和isPrime[1]设置为false,因为0和1不是质数。

3. 从2开始遍历数组,如果isPrime[i]为true,则将i的所有倍数(除了i本身)设置为false,因为它们不是质数。

4. 遍历完数组后,isPrime中为true的元素即为质数。

下面是使用埃拉托斯特尼筛法统计质数的示例代码:

function countPrimes(n) {

// 创建布尔数组,长度为n+1,并初始化为true

let isPrime = new Array(n+1).fill(true);

// 将0和1设置为false

isPrime[0] = false;

isPrime[1] = false;

// 遍历数组

for (let i = 2; i <= Math.sqrt(n); i++) {

// 如果isPrime[i]为true,则将i的所有倍数设置为false

if (isPrime[i]) {

for (let j = i * i; j <= n; j += i) {

isPrime[j] = false;

}

}

}

// 统计isPrime中为true的元素个数

let count = 0;

for (let i = 0; i <= n; i++) {

if (isPrime[i]) {

count++;

}

}

return count;

}

console.log(countPrimes(10)); // 输出4,即小于等于10的质数个数为4

在上述代码中,我们首先创建了一个布尔数组isPrime,长度为n+1,并将所有元素初始化为true。然后,我们将0和1设置为false,因为它们不是质数。

接下来,我们从2开始遍历数组。如果isPrime[i]为true,则说明i是质数,我们将i的所有倍数(除了i本身)设置为false,因为它们不是质数。这样,遍历完数组后,isPrime中为true的元素即为质数。

我们遍历isPrime数组,统计其中为true的元素个数,即为小于等于n的质数个数。

需要注意的是,在遍历数组时,我们只需要遍历到Math.sqrt(n)即可,因为大于Math.sqrt(n)的数的倍数已经被之前的质数筛选过了。

埃拉托斯特尼筛法是一种高效的质数统计算法,时间复杂度为O(nloglogn)。它利用了质数的性质,通过筛选掉非质数的方法,可以快速地统计给定范围内的质数个数。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码