Adloun

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.java essaie 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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →