我用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));
答案 0 :(得分:3)
您应该在if (sum>x)
的for循环中使用if (sum>n)
而不是getNumbers(n)
。