algorithmique (école d'ingénieur) · Chapitre 11 · Exercice de TD
Le pire cas d'Euclide
Programmes justes : logique de Hoare et invariants · niveau 3 (difficile)
Énoncé
On reprend la fonction pgcd du cours : tant que , on remplace par .
- Énoncer l'invariant et le variant de la boucle.
- Compter les tours pour , deux termes consécutifs de la suite de Fibonacci.
- Montrer que, si , deux tours consécutifs divisent au moins par . En déduire que le nombre de tours est en .
- Vérifier par programme quel couple demande le plus de tours.
Corrigé
- Invariant : (valeurs initiales), car . Variant : , entier positif qui décroît strictement puisque .
- (car et pour ). Le couple devient donc : on descend la suite d'un cran à chaque tour, jusqu'à , puis . Il faut tours :
pgcd(f(6), f(5)) : 4 tours
pgcd(f(11), f(10)) : 9 tours
pgcd(f(21), f(20)) : 19 tours
pgcd(f(41), f(40)) : 39 tours
- Après un tour, devient avec , puis après un second tour la première composante vaut . Si , alors ; si , alors . Dans les deux cas, deux tours divisent au moins par : au plus tours, .
- Le programme
Exercices11.javaessaie tous les couples :
pire cas pour 1 <= b <= a <= 1000 : 14 tours, (a, b) = (987, 610)
Ce sont deux termes consécutifs de Fibonacci, et : c'est le théorème de Lamé (1844), les couples de Fibonacci sont les pires cas de l'algorithme d'Euclide.
100 % gratuit
La suite du chapitre est sur Adloun
- 12 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.