2002/03 – Fase scolastica – 03

Un numero intero positivo è detto perfetto se è uguale alla somma dei suoi divisori propri (cioè, i divisori maggiori di 0 e minori del numero stesso).

Il seguente programma deve stampare i primi 5 numeri perfetti.
Aggiungete le istruzioni che mancano:

Program perfect(Input, Output);
Var
   x, c: Integer;
Function isPerfect(x: Integer): Boolean;
Var
   y, s: Integer;
Begin
   s:=....(1)....;
   For y:=1 to x-1 Do
      If (....(2).... = 0) Then
         s:=s+y;
   isPerfect:=(....(3)....)
End;
Begin
   x:=1;
   c:=0;
   While(c < 5) Do
      Begin
         If(isPerfect(x)) Then
            Begin
               WriteLn(x);
               ....(4)....
            End;
         x:=x+1
      End
End.

Nota

  • sostituire le dichiarazioni integer con longint