js怎么算100以内的质数

js怎么算100以内的质数

在JavaScript中计算100以内的质数,可以通过以下几种方法:使用基本循环、优化的筛法、递归等。以下是其中一种实现方法。

核心观点:基本循环法、优化的埃拉托色尼筛法、递归方法

基本循环法

基本循环法是最直观的一种方法,通过循环遍历1到100的所有数,并使用另一个循环检查这些数是否是质数。质数是指大于1且只能被1和它本身整除的数。

实现步骤

  1. 初始化一个空数组,用来存储质数。
  2. 使用第一个循环遍历1到100的所有数。
  3. 对于每一个数,使用另一个循环从2遍历到该数的平方根,检查是否有任何数能整除它。
  4. 如果没有任何数能整除它,则它是质数,将其添加到数组中。
  5. 打印数组。

代码示例

function findPrimesUpTo100() {

let primes = [];

for (let i = 2; i <= 100; i++) {

let isPrime = true;

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

if (i % j === 0) {

isPrime = false;

break;

}

}

if (isPrime) {

primes.push(i);

}

}

return primes;

}

console.log(findPrimesUpTo100());

优化的埃拉托色尼筛法

埃拉托色尼筛法是一种更高效的算法,用于在给定范围内找到所有质数。其基本思想是从最小的质数2开始,将其所有的倍数标记为非质数,然后移动到下一个未标记的数,重复这一过程。

实现步骤

  1. 创建一个布尔数组,初始值全部为true(表示可能是质数)。
  2. 从2开始遍历数组,用当前数的倍数标记为false。
  3. 继续遍历直到数组的平方根。
  4. 最后,所有值为true的索引即为质数。

代码示例

function sieveOfEratosthenes(limit) {

let sieve = Array(limit + 1).fill(true);

sieve[0] = sieve[1] = false; // 0 and 1 are not prime numbers

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

if (sieve[i]) {

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

sieve[j] = false;

}

}

}

let primes = [];

for (let i = 2; i <= limit; i++) {

if (sieve[i]) {

primes.push(i);

}

}

return primes;

}

console.log(sieveOfEratosthenes(100));

递归方法

递归方法虽然不如前两种方法直观和高效,但在某些情况下可以带来一定的灵活性。

实现步骤

  1. 定义一个递归函数来检查一个数是否是质数。
  2. 该函数调用自身来检查当前数是否能被比它小的数整除。
  3. 递归遍历1到100的所有数,调用该函数检查质数。

代码示例

function isPrime(num, divisor = 2) {

if (num < 2) return false;

if (divisor > Math.sqrt(num)) return true;

if (num % divisor === 0) return false;

return isPrime(num, divisor + 1);

}

function findPrimesUpTo100Recursively() {

let primes = [];

for (let i = 2; i <= 100; i++) {

if (isPrime(i)) {

primes.push(i);

}

}

return primes;

}

console.log(findPrimesUpTo100Recursively());

性能对比与选择

基本循环法虽然直观,但时间复杂度较高,为O(n√n)。埃拉托色尼筛法更高效,时间复杂度为O(n log log n),适合处理较大范围的质数计算。递归方法相对灵活,但由于递归深度限制,不适合处理过大数值范围。

项目团队管理系统推荐

在开发和管理涉及复杂算法的项目时,选择合适的项目管理系统至关重要。推荐以下两个系统:

  1. 研发项目管理系统PingCode:专为研发团队设计,提供强大的需求管理、缺陷跟踪和版本控制功能。
  2. 通用项目协作软件Worktile:适用于各种团队协作,界面友好,功能全面,支持任务管理、时间跟踪和文档共享。

通过选择合适的项目管理系统,可以提高项目开发效率,确保算法的优化与实现更加高效。

相关问答FAQs:

1. 100以内有哪些质数?
在100以内,有哪些数是质数呢?

2. 如何判断一个数是不是质数?
我想知道,有没有办法判断一个数是不是质数呢?

3. 有没有简单的方法来找出100以内的质数?
请问有没有一种简单的方法来找出100以内的质数呢?

文章包含AI辅助创作,作者:Edit2,如若转载,请注明出处:https://docs.pingcode.com/baike/3639984

(0)
Edit2Edit2
免费注册
电话联系

4008001024

微信咨询
微信咨询
返回顶部