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
- 11 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.