(************************************************************************************) (* Algorithme de recherche des nombres parfait (optimisé) *) (*----------------------------------------------------------------------------------*) (* Auteur : MANI Mohamed Anis *) (************************************************************************************) program nombre_parfaits; uses wincrt; function Est_Parfait(n : longint):boolean; var p : boolean; s, i : longint; begin s:=1; i := trunc(sqrt(n)); while (i > 1) and (s < n) do begin { Comme i divise n alors (n div i) divise surement n } { Exemple : n = 28, i = 4 -- Comme 4 divise 28 } { alors 7 divise aussi 4 } if (n mod i = 0) then s := s + i + n div i; i := i - 1; end; Est_Parfait := (s = n); end; var i, n : longint; begin Writeln('Recherche de nombres parfaits optimisé'); Write('Entrer un entier n positif : '); Readln(n); for i:=1 to n do begin if Est_Parfait(i) then writeln(i); end; end.