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)