Variant non trivial — l'algorithme d'Euclide
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 1 — La discipline de programmation
Énoncé
Prouver la terminaison de la boucle while suivante en exhibant un variant :
def pgcd(a: int, b: int) -> int:
while b > 0:
a, b = b, a % b
return aCorrigé
Démonstration : Choisissons pour variant la valeur de la variable b.
- Positivité : Tant que la boucle s'exécute, la condition
b > 0garantit que notre variant reste strictement positif. - Décroissance : À chaque itération de la boucle, la valeur de
best remplacée para % b. Par définition mathématique de la division euclidienne, le reste appartient à l'ensemble . Le nouveaubest donc strictement inférieur à l'ancien. La suite des valeurs successives prises parbest une suite d'entiers naturels strictement décroissante, ce qui prouve la terminaison de la boucle.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.