Académique Documents
Professionnel Documents
Culture Documents
com
1
Lycée secondaire Mourouj1 info.nabiha@gmail.com
Exercice4
• 1ère méthode TDO
Algorithme Amis Objet Type
Début A, B, SA, SB, i Entier
Répéter
Ecrire ("Saisir A : "), Lire (A) * Implémentation Python
Jusqu’à (A>0) A=int(input("saisir A: "))
Répéter while not(A>0):
Ecrire ("Saisir B : "), Lire (B) A=int(input("saisir A: "))
Jusqu’à (B>0)
SA 0 B=int(input("saisir B: "))
Pour i de 1 à (A div 2) Faire while not(A>0):
Si (A mod i =0) alors B=int(input("saisir B: "))
SA SA + i
Fin si SA=0
Fin pour for i in range(1,(A//2)+1):
SB 0 if (A % i==0):
Pour i de 1 à (B div 2) Faire SA=SA+i
Si (B mod i =0) alors
SB SB + i SB=0
Fin si for i in range(1,(B//2)+1):
Fin pour if (B % i==0):
Si (SA=B) ET (SB=A) alors SB=SB+i
Ecrire ("Nombres amis")
Sinon if (SA==B) and (SB==A):
Ecrire ("Nombres non amis") print("Nombres amis")
Finsi else:
Fin print("Nombres non amis")
Début
Pour i de 0 à (n-1) Faire TDOL
Répéter Objet Type
Ecrire ("Saisir un entier : "), Lire (T[i]) i Entier
Jusqu’à (T[i]>0)
Fin pour
Fin
* Algorithme de procédure Remplir2
Procédure Remplir1 (n : entier; T :Tab; @ A: Tab)
Début
m 0 TDOL
Pour i de 0 à (n-1) Faire Objet Type
Si (Abondant(T[i])) ET (Symetrique(T[i])) alors i Entier
A[m] T[i] Symetrique, Abondant Fonction/booléen
m m+1
Fin si
Fin pour
Ecrire ("Les éléments symétriques et abondants sont : ")
Pour i de 0 à (m-1) Faire
Ecrire (A[i])
Fin pour
Fin
* Algorithme de fonction Abondant
Fonction Abondant (x : entier) : booléen
Début TDOL
S 0 Objet Type
Pour i de 1 à (x div 2) Faire S, i Entier
Si (x mod i =0) alors R Booléen
S S+i
Fin si
Fin pour
R Faux
Si (S<x) alors
R vrai
Fin si
Retourner R
Fin
* Algorithme de fonction Symetrique
1ère méthode on compare le premier caractère avec le dernier, le deuxième avec l’avant dernier, et ainsi de
suite jusqu’à la moitié de la chaine.
Fonction Symetrique (x : entier) : booléen
Début TDOL
ch convch(x) Objet Type
R vrai j Entier
j 0 R Booléen
Tant que (R=vrai) ET (j ≤ long(ch) div 2) Faire
Si (ch[j]=ch[long(ch)-1-j]) alors
j j+1
Sinon R Faux
4
Lycée secondaire Mourouj1 info.nabiha@gmail.com
Fin si
Fin Tant que
Retourner R
Fin
2ème méthode on définit ch1 l’inverse de la chaine équivalente ch de x puis on les compare, si elles sont
égales alors x est symétrique
Fonction Symetrique (x : entier) : booléen TDOL
Début Objet Type
ch convch(x) j Entier
R Faux R Booléen
ch1 "" ch, ch1 chaine
Pour j de 0 à long(ch)-1 Faire
ch1 ch[j] + ch1
Fin pour
Si (ch=ch1) alors
R vrai
Fin si
Retourner R
Fin
Remarque : pour déterminer l’inverse, on peut exprimer autrement
ch1 ""
Pour j de long(ch)-1 à 0 Faire
ch1 ch1 + ch[j]
Fin pour
* Implémentation Python
from numpy import* def abondant(x):
def saisie(): v=False
n=int(input("Saisir n: ")) s=0
while not(4<=n<=20): for j in range (1,(x//2)+1):
n=int(input("Saisir n: ")) if (x%j==0):
return n s=s+j
if (s<x):
def remplir1(n,t):
v=True
for i in range (0,n):
return v
t[i]=int(input("Saisir T["+str(i)+"]= "))
while not(t[i]>=0): def remplir2(n,t,a):
t[i]=int(input("Saisir T["+str(i)+"]= ")) m=0
for i in range(n):
def symetrique(x):
if symetrique(t[i]) and abondant(t[i]):
r=True
a[m]=t[i]
ch=str(x)
m=m+1
j=0
#affichage des éléments de a
while(r==True)and(j<=len(ch)//2):
for i in range(m):
if (ch[j]==ch[len(ch)-1-j]):
print(a[i],end=" ")
j=j+1
else: #programme principal
r=False n=saisie()
return r t=array([int]*20)
a=array([int]*20)
remplir1(n,t)
remplir2(n,t,a)