Program S5;
Type
Tab = Array[1..50] Of integer;
Var
T1,T2 : Tab;
N1,N2,N,M,A1,A2 : integer;
//**************************************
Procedure Saisie(Var N,M:integer);
Begin
Repeat
write('Donner N et M : ');
readln(N,M);
Until (n>=10) And (N<=M) And (M<=999);
End;
//**************************************
Function Som_Diviseur(x:integer) : integer;
Var
i,S : integer;
Begin
S := 0;
For i:=1 To( x Div 2) Do
Begin
If ( x Mod i= 0) Then
S := S+i;
End;
Som_Diviseur := S;
End;
//**************************************
Procedure Remplissage(Var T:Tab;Var Taille:integer;x:integer);
Begin
Taille := 1;
T[1] := x;
Repeat
Taille := Taille+1;
T[Taille] := Som_Diviseur(T[Taille-1]);
Until (T[Taille] = T[Taille-1])Or (T[Taille] = 1);
End;
//**************************************
Procedure Affichage(T:Tab;N:integer);
Var
i : integer;
Begin
For i:=1 To N Do
write(T[i],'|');
End;
//**************************************
Function Recherche(T:Tab;N,x:integer) : Boolean;
Var
i : integer;
Begin
i := 1;
While (i<=N) And (T[i] <> x) Do
i := i+1;
Recherche := (i<=N);
End;
//**************************************
Function NB_Commun(T1,T2:Tab;N1,N2:integer) : integer;
Var
i,NB : integer;
Begin
NB := 0;
For i:=1 To N1 Do
Begin
If (Recherche(T2,N2,T1[i])) Then
NB := NB+1;
End;
NB_Commun := NB;
End;
//**************************************
Begin
Saisie(N,M);
Remplissage(T1,N1,N);
Remplissage(T2,N2,M);
A1 := -1;
If (T1[N1]-T1[N1-1] = 0) Then
writeln('Les termes de la suite de ',N,' ne forment pas une suite aliquote')
Else
Begin
writeln('Les termes de la suite de ',N,' forment une suite aliquote') ;
Affichage(T1,N1);
A1 := 1;
writeln;
End;
A2 := -1;
If (T2[N2]-T2[N2-1] = 0) Then
writeln('Les termes de la suite de ',M,' ne forment pas une suite aliquote')
Else
Begin
writeln('Les termes de la suite de ',M,' forment une suite aliquote') ;
Affichage(T2,N2);
A2 := 1;
writeln;
End;
If (A1=1) And (A2=1) Then
Begin
writeln(NB_Commun(T1,T2,N1,N2));
End;
End.
Inscription à :
Publier les commentaires (Atom)