Numeri perfetti

Un numero naturale n è perfetto se è uguale alla somma dei suoi divisori propri (n escluso).
Consulta Wikipedia: Numeri perfetti, numeri abbondanti/difettivi/amicabili/primi, …

Esempi

n Divisori propri Somma
6 1, 2, 3 1+2+3 = 6
16 1, 2, 4, 8 1+2+4+8 = 15
28 1, 2, 4, 7, 14 1+2+4+7+14 = 28
Program Perfetti;
Var
   n, i: LongInt;
Begin
   ReadLn(n);
   Somma:=1;
   For i:=2 To N-1 Do
      If(n mod i = 0) Then
         Somma:=Somma+i;
   Writeln(Somma = n);
   Readln;
End.

Approfondimento

  1. Il ciclo può essere accorciato a n/2
  2. Avendo a disposizione la somma dei divisori propri di n si possono fare più valutazioni…
n Divisori propri Somma
6 1, 2, 3 1+2+3 = 6 perfetto
10 1, 2, 5 1+2+5 = 8 8 < 10, difettivo
12 1, 2, 3, 4, 6 1+2+3+4+6 = 14 14 > 12, abbondante
13 1 1 primo
16 1, 2, 4, 8 1+2+4+8 = 15 15 = 16-1, lievemente difettivo
28 1, 2, 4, 7, 14 1+2+4+7+14 = 28 perfetto

Aggiungi opportunamente il codice

     If(Somma = 1  ) Then Writeln('Primo               ')
Else If(Somma < n-1) Then Writeln('Difettivo'           )
Else If(Somma = n-1) Then Writeln('Lievemente difettivo')
Else If(Somma = n  ) Then Writeln('PERFETTO'            )
Else If(Somma = n+1) Then Writeln('Quasi abbondante'    )
Else If(Somma > n+1) Then Writeln('Abbondante'          )
Else                 Then Writeln('??? ERRORE ???'      );