sample05.PAS

{* Печать всех совершенных чисел до 10000 *}

Unit SAMPLE05;
Interface
Implementation
Begin
 writeln('Печать всех совершенных чисел до 10000');
End.

Program pas;

Uses sample05.pas; {* Эту строку можно удалить *}
Const {* Постоянные значения *}
  LIMIT = 10000;
Var {* В работе нам потребуются переменные: *}
  n   : word;
  i   : word;
  j   : word;
  s   : word;
  lim : word;
  c   : word;
  d   : word;
Begin
  For i := 1 To LIMIT Do {* Увеличиваем i от 1 до LIMIT с шагом 1 *}
  Begin
    s := 1;
    lim := round(sqrt(i));
    For j := 2 To lim Do {* Увеличиваем j от 2 до lim с шагом 1 *}
    Begin
      c := i Mod j;
      d := i Div j;
      If c = 0 Then
      Begin
        inc(s, j); {* s, j++ *}
        If (jd) Then
          inc(s, d); {дважды не складывать корень числа}
      End;
      
    End;
    If s = i Then
      writeln(i);
  End;
  
End.