NSI (première) · Chapitre 1 · Exercice de TD
Écrire zeros terminaux(n) , qui renvoie le nombre de zéros terminant…
Représenter les entiers · Écrire un nombre dans une base · niveau 2
Énoncé
Écrire zeros_terminaux(n), qui renvoie le nombre de zéros terminant l'écriture binaire de . Quel renseignement arithmétique ce nombre donne-t-il sur ? Le vérifier sur machine pour tous les de à .
Corrigé
def zeros_terminaux(n):
"""Nombre de 0 à la fin de l'écriture binaire de n >= 1."""
k = 0
while n % 2 == 0:
n = n // 2
k = k + 1
return k
Ce que ce nombre dit. Terminer par zéros en base deux, c'est être divisible par et pas par — exactement comme, en base dix, terminer par zéros signifie être divisible par et pas par . Le cherché est donc l'exposant de dans la décomposition de en facteurs premiers.
La vérification :
for n in range(1, 5000):
k = zeros_terminaux(n)
assert n % 2**k == 0 and n % 2**(k + 1) != 0
Contrôle : zeros_terminaux(2026) vaut ( avec impair), et zeros_terminaux(2048) vaut , puisque s'écrit 100000000000.
Terminaison : la boucle divise par à chaque tour et s'arrête dès que est impair ; comme , elle s'arrête au plus tard quand vaut . Pour elle ne s'arrêterait jamais : d'où la précondition .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.