Exercice — dans l'esprit des sujets d'informatique
On demande une solution algorithmique de deux modules PGCD et PGCDTous pour des entiers naturels — chapitre bases/arithmétique, pas récursivité.
- Écrire le module
PGCD(a,b)selon l'algorithme d'Euclide itératif (modjusqu'à reste nul) pour deux entiers. - Écrire le module
PGCDTous(T[1..n])qui calcule le PGCD de tous les entiers du vecteur en enchaînant Euclide : puis . - Trace :
PGCDTous([12,18,30])— valeurs successives de l'accumulateur.
Voir la correction commentéeAprès avoir posé votre démarche
1. Euclide.DEF FN PGCD(a, b : entier) : entier
Variables r : entier
Début
TantQue b ≠ 0 faire
r ← a mod b ; a ← b ; b ← r
FinTantQue
Retourner a
Fin
2. PGCDTous.DEF FN PGCDTous(T : vect ; n : entier) : entier
Variables g, i : entier
Début
g ← T[1]
Pour i de 2 à n faire
g ← PGCD(g, T[i])
FinPour
Retourner g
Fin
3. ; ; . Résultat 6.