Я пытаюсь написать в разделе «Обработка» функцию, которая выводит все идеальные числа, меньшие n, для моего набора домашних заданий. Однако у меня возникли проблемы с поиском алгоритма, который соответствует проблеме.
Я написал цикл for, который циклически перебирает все числа от 1 до n. Поскольку сумма всех его делителей равна идеальному числу, я сделал оператор if, проверяя остатки n и добавляя их в переменную суммы, называемую «результат». Затем, в конце этого цикла, если результат равен n, я распечатал его.
void perfect(int n) {
int result = 0;
for(int i = 1; i < n; i++) {
if(n % i == 0) {
result = result + i;
}
}
if( result == n) {
println(n);
}
}
В настоящее время мой код ничего не печатает. Когда я удалил оператор if ближе к концу, он распечатал все значения n, но не идеальные числа. Я полагаю, что где-то в моем коде есть ошибка, из-за которой n никогда не равно «result».