Как бы я написал функцию в Java, которая печатает идеальные числа меньше, чем n? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь написать в разделе «Обработка» функцию, которая выводит все идеальные числа, меньшие 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».

1 Ответ

0 голосов
/ 09 июля 2019

вам придется использовать вложенный цикл for, чтобы получить все идеальные числа от 1 до n. Как показано ниже:

int i, sum = 1;

System.out.print("Perfect nos from 1 to n are 1,");

for (int j = 2; j <= n; j++)
{
    sum = 1;
    for (i = 2; i < j; i++)
    {
        if (j % i == 0)
            sum = sum + i;
    }
    if (j == sum)
        System.out.print(j + ",");
}
...