Алгоритм основан на том, что совершенное число равно сумме своих правильных делителей (исключая само число).
Пример: 6=1+2+3; 28=1+2+4+7+14
sd:=0;{сумма делителей числа};
For del:=1 to ch-1 do {проверяются все числа от 1 до самого числа}
Begin
{если число делится на del без остатка, то del является делителем}
if ch mod del=0 then inc(sd,del);{можно по другому: ...then sd:=sd+del}
{Если число равно сумме своих делителей,то...}
If ch=sd then Writeln(ch,' совершенное');
Sch:=Sch+ch; {Сумма совершенных чисел, можно здесь использовать оператор inc()}
Pch:= Pch +ch; {Произведение совершенных чисел}
Inc(kch); {Количество совершенных чисел}
{и др.}
end;