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

Задача: 

Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6=1+2+3. Найдите все совершенные числа от 1 до 1000 и выведите их на экран. Подсказка: вам необходимо найти все делители от 1 до исследуемого числа. Делителем числа называется число, которое делит данное без остатка (a mod b=0).

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

const N = 1000;
var
    i,d,j,k,sum: integer;
    dv: array[1..N] of integer;
begin
    for i:=2 to N do begin
        //write(i,': ');
        d := 1;
        j := 1;
        while d < i do begin
            if i mod d = 0 then begin
                dv[j] := d;
                j := j+1;
                //write(d,',');
            end;
            d := d + 1;
        end;
        sum := 0;
        for k:=1 to j-1 do
            sum := sum + dv[k];
        if sum = i then
            writeln(i,' - perfect!');
       //writeln;
    end;
 
readln;
end.

Комментарии

pascal

Есть более простой путь:

var i,j,s:integer;
begin
for i := 1 to 1000  do
begin
s:=0;
  for j := 1 to i - 1 do
  if i mod j=0 then s:=s+j;
if s=i then write(i,';');
end;
readln;
end.

Не понятно

//write(i,': '); и что тут
означает " // "?
и
dv[j] ---- это у тебя такае
зменная?

Не могли бы Вы более подробно

Не могли бы Вы более подробно объяснять как она работает? Не совсем понимаю, к чему увлечение переменных d и j на 1.

Я решал не через массив,

Я решал не через массив, гораздо проще и доступнее. Ответы как я понял 6, 28 и 496

Делители можно сразу

Делители можно сразу суммировать, а не помещать их сначала в массив.