Aide programme pascal a resoudre

punisher338 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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.
A voir également:

3 réponses

punisher338 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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