当除数的总和满足条件时,并不会显示每个数字

时间:2019-01-19 16:38:20

标签: javascript

我用javascript做过一些编码,但我不明白问题所在...

我的目标是获取给定数字的每个除数,并检查它们的总和是否大于数字本身。

除数应该包含一个,但数字本身不可以。

我制作了2个函数来分离代码,并使其现在更具可读性。

在前12个数字中,该条件仅适用于数字12,因为1 + 2 + 3 + 4 + 6 = 16大于12并且可以正确显示它,但是当我尝试使用前20个函数时数字,仅显示18和20,而12则明显好。当循环达到数字16时,它消失。

这是我的代码:

function getDivisors(n){
    var divisors=new Array();

    for(var x=1;x<n;x++){
      if(n%x==0) divisors.push(x);
    }
    return divisors;
  }


  function getNumbers(n){
    var numbers=new Array(),
    sum=0;

    for(var x=1;x<=n;x++){
      sum=getDivisors(x).reduce((a, b) => a + b, 0);
      if(sum>n) numbers.push(x);
      console.log("Number: "+x+" sum:"+sum);
    }
    return numbers;
  }

  console.log(getNumbers(20));

1 个答案:

答案 0 :(得分:3)

您应该在if (sum>x)的for循环中使用if (sum>n)而不是getNumbers(n)