【问题标题】:Sum All Primes Below a Given Number | Intermediate Javascript Algorithm | Recursion给定数以下的所有素数之和 |中级 Javascript 算法 |递归
【发布时间】:2020-09-02 09:59:23
【问题描述】:

问题

素数是一个大于 1 的整数,只有两个除数:1 和它自己。例如,2 是质数,因为它只能被 1 和 2 整除。相反,4 不是质数,因为它可以被 1、2 和 4 整除。

重写 sumPrimes 使其返回所有小于或等于 num 的素数之和。

我的尝试

const isPrime = a => {
  
  for(let i = 2; i < a; i++)
    if(num % i === 0) return false;
  return a > 1;
}




function sumPrimes(num, total = []) {
  
  let numVar = num;

  let n = total.reduce((aggregate, item)=>{
    
    return aggregate + item; 
  
  }, 0);

  if(n > numVar){
    return n;
  
  }

  for(let i = 1; i <= numVar; i++){
    if(isPrime(i)== true){
      total.push(i);
    }
    
  }
  
  return sumPrimes(num, total);

}

sumPrimes(10);

问题

  1. 上面写着:'Num is not defined'

  2. 我不确定是否还有其他错误。

我的问题

请你帮我找出错误,并修复代码以解决算法?

【问题讨论】:

  • 因为num 没有在isPrime 中定义?

标签: javascript algorithm recursion


【解决方案1】:

这是@Jonas Wilms 发现的一个简单的语法错误(在上面的评论中为他点赞 :))!

通过将 'a' 替换为 'num' 功能得到修复。

const isPrime = a => {
  
  for(let i = 2; i < a; i++)
    if(a % i === 0) return false;
  return a > 1;
}




function sumPrimes(num, total = []) {
  
  let numVar = num;

  let n = total.reduce((aggregate, item)=>{
    
    return aggregate + item; 
  
  }, 0);

  if(n > numVar){
    return n;
  
  }

  for(let i = 1; i <= numVar; i++){
    if(isPrime(i)== true){
      total.push(i);
    }
    
  }
  
  return sumPrimes(num, total);

}

console.log(sumPrimes(10));

【讨论】:

    【解决方案2】:

    这个简单的功能可以帮到你,

    function isPrime(num) {
      for (var i = 2; i < num; i++)
        if (num % i === 0) return false;
      return num > 1;
    }
    
    function sumPrimes(num) {
      let tot = 0;
      for (let i = 0; i < num; i++)
        if (isPrime(i)) 
          tot += i;
      
      return tot;
    }
    
    console.log(sumPrimes(10));

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2013-05-15
      • 2015-05-01
      • 2020-06-08
      相关资源
      最近更新 更多