Bonjour j'ai un peu de mal à faire mon exercice à rendre pour demain , est-ce-qu'il y aurait quelqu'un pour m'éclairer ?
Voici l'énoncé :
On souhaite avoir une fonction nb_zeros qui détermine le nombre de zéros à la fin de l'écriture décimale d'un entier n > 0, très grand.
On s'interdit, ici, d'utiliser la fonction de conversion str.
Cette méthode est totalement inefficace avec des nombres très grands. On demande plutôt de compter combien de fois on peut diviser un nombre par 10 avec un reste égal à zéro.
Par exemple, 1. 42000 = 4200×10 + 0, 2. 4200 = 420×10 + 0, 3. 420 = 42×10 + 0, 4. 42 n'est pas divisible par 10.
On a pu diviser 42000 trois fois par 10 avec un reste égal à 0.
Ce nombre se finit donc par 3 zéros.
Code :
def nb_zeros(n):
assert nb_zeros(42000) == 3 = 1
assert nb_zeros(3210) == 0
assert nb_zeros(282475249)
assert nb_zeros(7**10000) == 0
assert nb_zeros(7**10000 * 1000) 3