Напишите статический метод
printNumbers
, который принимает целое число max в качестве аргумента и выводит все совершенные числа, которые меньше или равны max.
Сначала я продолжал получать неправильный ответ, потому что внутренний цикл был установлен на j ‹ max, прежде чем я изменил его на j ‹ i. Однако я не понимаю, почему этот диапазон имеет значение, потому что в любом случае i % j != 0
не будет, даже если диапазон j будет больше?
for (int i = 1; i <= max; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
System.out.print(sum + " ");
}
}
Если бы я изменил внутренний цикл j < max
, то printNumbers(6)
дал бы и 1, и 6, а printNumbers(500)
дал бы только 1 и никакое другое число.
j == i
, потому чтоi % j
равно 0, когда это происходит - person Andreas   schedule 06.06.2019j < max
, но не сj < i
. - person Elmar Peise   schedule 06.06.2019