gpt4 book ai didi

Javascript 跳过未定义的相邻值

转载 作者:行者123 更新时间:2023-11-30 11:19:54 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来寻找完美和几乎完美 的数字。

var num = readline();

function sumDivisors(num){
var sum = 0;
for (var i = 1; i < num; i++){
if (!(num % i)) {
sum += i;
}
}
if ( sum == num ) {
print(num + " perfect");
}
if ( (sum - num == 2) || (sum - num == -2) ) {
print(num + " almost perfect");
}
if ( ( sum != num ) && (sum - num != 2) && (sum - num != -2) ) {
print(num + " not perfect");
}
while(readline()){
sumDivisors(readline());
}
}

print(sumDivisors(num));

它接受来自用户的大量输入,并输出perfect 完美的数字,almost perfect 几乎完美的数字,not perfect 因为...好吧,你明白了。

示例输入/输出

enter image description here

我的问题:

我快到了。上面的代码似乎有效,除了一件事。 while 循环跳过相邻的值并将它们标记为 undefined

例如,当我输入 6,43,2,650,28 时,输出将是 6 - 完美,[43 将被跳过],2 - 不完美,[650 将被跳过],28 - 完美,未定义

有问题的输出

enter image description here

最佳答案

您在每个循环中调用了两次 readline():

while(readline()){          // <-- here
sumDivisors(readline()); // <-- again here
}

因为您没有对第一个号码做任何事情,它只是从列表中删除号码。一个简单的解决方法是将结果保存在 while() 测试中:

while((n = readline())){
sumDivisors(n);
}

或者更好:

if((n = readline())){ // <-- you don't need a loop here since you have recursion
sumDivisors(n);
}

您还对 sumDivisors() 调用了 print,它不返回任何内容:print(sumDivisors(num)); 这是为什么在输出中出现 undefined 行。

关于Javascript 跳过未定义的相邻值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50201836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com