Adloun

algorithmique (école d'ingénieur) · Chapitre 10 · Exercice de TD

Taille d'une donnée numérique

Complexité des programmes · niveau 3 (difficile)

Énoncé

Pour savoir si un entier est premier, on essaie de le diviser par tous les entiers tels que et .

  • Quel est le nombre de divisions dans le pire cas ? Le programme est-il « en » ?
  • La taille de la donnée est le nombre de chiffres de . Exprimer la complexité en fonction de . Ce programme est-il polynomial ?
  • Estimer le temps de calcul, à divisions par seconde, pour un nombre premier de chiffres, puis de chiffres. Faire le rapprochement avec la complexité pseudo-polynomiale du sac.

Corrigé

  • Le pire cas est celui d'un nombre premier : aucune division ne réussit et l'on essaie diviseurs. Le nombre de divisions est bien en , mais n'est pas la taille de la donnée.
  • Un nombre de chiffres vérifie , donc est de l'ordre de : la complexité est exponentielle en la taille . Le programme n'est pas polynomial.
  • Pour : environ divisions, une seconde. Pour : environ divisions, plus de jours. Douze chiffres de plus multiplient le temps par un million. Le sac de valeur maximum est dans la même situation : est polynomial en la valeur de , mais exponentiel en son nombre de chiffres (complexité pseudo-polynomiale).

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 →