Aide programme pascal a resoudre

Bonjour
écrire en pascal un programme qui permet de determiner les nombres parfaits entre deux entiers m et n donnés par avance telque 2˂m˂n
exemple : un nombre est dit parfait si la somme de ses diviseurs autre que lui est egale a lui meme par exemple (6=1+2+3) donc 6 est parfait
et merci d'avance de votre aide.
Configuration: Windows Vista Internet Explorer 7.0

3 réponses

  1. program parfait;
    uses wincrt;
    var

    begin
    writeln('enter un entier m');
    readln(m);
    writeln('entrer un entier n');
    readln(n);
    repeat
    writeln ('entrer un entier p');
    readln(p);
    until (p˂m) and (n˂p);
    somme:=0;
    for i:=1 to ( p div 2 ) do
    if p mod 2 = 0 then somme:=somme+i;
    if p=somme then writeln('l''entier est parfait ');
    else writeln('l''entier est parfait');
    end.
    ou ol existe une autre solution pour affichier tous les entiers parfaits
    on procede de la maniere suivante

    begin
    writeln('entrer un entier m');
    readln(m);
    writeln('entrer un entier n');
    readln(n);
    for i:=m to n do
    somme:=0;
    for j:= 1 to ( i div 2) do
    if i mod j = 0 then somme:=somme+j;
    if i=somme then writeln(i,' ');
    end.
    0
    1. Modérateur
      Salut,

      Il est très important de décomposer ton code en fonctions et procédures si tu veux arriver à quelque chose de facilement corrigible et donc d'arriver plus facilement à un programme correct.
      program punisher338;
      
      function EstParfait(n:integer):boolean;
      var i,s:integer;
      begin
           s:=0;
           for i:=1 to (n div 2) do
               if (n mod i)=0 then s:=s+i;
           result:= (n=s);
      end;
      
      procedure AfficherNbParfait(min,max:integer);
      var i:integer;
      begin
           for i:=min to max do
               if EstParfait(i) then writeln(i);
      end;
      
      var a,b:integer;
      begin
      writeln('Affichage des nombres premiers compris entre a et b.');
      writeln;
      write('a = '); readln(a);
      write('b = '); readln(b);
      writeln;
      AfficherNbParfait(a,b);
      
      writeln; write('Fin du programme. Appuyer sur Entree'); readln;
      end.
      0