Совершенные числа | Язык Паскаль

Совершенные числа

Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6 = 1 + 2 + 3. Найдите все совершенные числа от 1 до 10000 и выведите их на экран.

Подсказка: необходимо найти все делители от 1 до тестируемого числа. Делителем числа называется число, которое делит данное без остатка (a mod b = 0).

Алгоритм решения задачи:

  1. Каждое число от 1 до 1000 поочередно делить на все целые числа от 1 до этого числа. На самом деле достаточно до половины заданного числа.
  2. Найти сумму всех делителей и сравнить с самим числом. Если сумма и число равны, то последнее является совершенным.

Программа на языке Паскаль:

const N = 10000;

var
    i, j, sum: integer;

begin

    for i := 2 to N do begin

        sum := 0;

        for j := 1 to i div 2 do begin
            if i mod j = 0 then
                sum := sum + j;
        end;

        if sum = i then
            writeln(i, ' - perfect!');
    end;
 
end.

Результат выполнения программы:

6 - perfect!
28 - perfect!
496 - perfect!
8128 - perfect!