Program S7;
Var
a,b : integer;
//***********************************
Procedure Saisie(Var a,b:integer);
Begin
Repeat
Write('a = ');
Readln(a);
Write('b = ');
Readln(b);
Until (2<=a) And (a<b) And (b<=100);
End;
//***********************************
Function Test_Primalite(p,k : Byte) : Boolean;
Begin
While (p<>k) Do
If (p>k) Then
p := p-k
Else
k := k-p;
Test_Primalite := (p=1);
End;
//***********************************
Function unitairement_parfait(N:integer) : boolean;
Var
i : integer;
S : integer;
Begin
S := 0;
For i:=1 To (n Div 2) Do
If (N Mod i = 0) And (Test_Primalite(i, N Div i)) Then
S := S+i;
unitairement_parfait := S=N;
End;
//***********************************
Procedure Afficher(a,b:integer);
Var
i : integer;
Begin
Writeln('Les nombres unitairement parfaits de ',a,' à ',b,' sont : ');
For i:=a To b Do
Begin
If unitairement_parfait(i) Then
writeln(i);
End;
End;
//***********************************
Begin
Saisie(a,b);
Afficher(a,b);
End.
Inscription à :
Publier les commentaires (Atom)