Я пытаюсь написать программу, которая ищет идеальные и почти идеальные числа.
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));
Он принимает несколько входных данных от пользователя и выводит идеально для идеальных чисел, почти идеально для почти идеальных чисел и не идеально для. .. ну, вы поняли.
Пример ввода / вывода
Мой вопрос:
Я почти у цели. Код выше, кажется, работает, за исключением одной вещи. Цикл while пропускает соседние значения и помечает их как undefined
.
Например, когда я введу 6,43,2,650,28, вывод будет 6 - идеально, [43 будет пропущено], 2 - не идеально, [650 будет пропущено], 28 - идеально, undefined
.
проблемный вывод