首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何修正这段代码,使所有素数都在一个范围内?

我如何修正这段代码,使所有素数都在一个范围内?
EN

Stack Overflow用户
提问于 2022-04-12 04:45:29
回答 1查看 62关注 0票数 0

因此,我正在测试我的算法,并试图打印一个范围内的所有素数。我认为代码是合乎逻辑的,但它总是打印错误的输出,即未经过滤的数字列表。

代码语言:javascript
复制
function sumPrimes(num) {
  // Check all numbers for primality
  let a = []
  let b = []
  for (let i = 2; i <= num; i++) {
      a.push(i)
      b.push(i)
  }
  //console.log(a)
  return a.filter(function(item) {
    for(let j = 0; j < b.length; j++) {
      if(item !== b[j] && item % b[j] != 0) {
        return true
      } 
    }
    return false; 
  })
}
sumPrimes(977);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 04:51:58

几乎没有什么问题。首先,j应该开始与2相等。否则,它将看到每个值都有一个因子1。如果我们不遍历整个b[j]跨度,而只是到item,我们也可以跳过检查,以确保item不是b。另一个主要问题是return truereturn false是向后的。

接下来的问题是,你并不真的需要一些部件。例如,b[j]总是等于j + 2,因此不需要构建b

代码语言:javascript
复制
function sumPrimes(num) {
  // Check all numbers for primality
  let a = []
  for (let i = 2; i <= num; i++) {
      a.push(i)
  }

  return a.filter(function(item) {
    for(let j = 2; j < item; j++) {
      if(item % j === 0) {
        // j is a factor so we shouldn't keep it and instead skip it
        return false;
      } 
    }
    // We know that all of the values up to item are not factors so we keep it
    return true; 
  })
}

console.log(sumPrimes(977));

此外,如果在添加值时应用筛选,则可以跳过将每个值添加到a

代码语言:javascript
复制
function getPrimesUpTo(num) {
  let primes = [];

  // Check each value
  for (let i = 2; i <= num; i++) {
      let hasFactors = false;

      // Search for any factors before adding it to our list of primes
      for (let possibleFactor = 2; possibleFactor < i; possibleFactor++) {
          if (i % possibleFactor === 0) {
              hasFactors = true;
              break;
          }
      }
      
      if (!hasFactors) {
          primes.push(i);
      }
  }

  return primes;
}

console.log(getPrimesUpTo(977));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71837229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档