J'ai écrit un programme pour vérifier si ma pensée sur la solution sur papier est correcte (et c'est le cas).Simplifier ce code python
La tâche: combien de zéros est dans le dos de la multiplication de tous les numéros de 10 à 200.
Il est 48 et il est simple de calculer manuellement.
Je n'écrire sur python sérieux et voici ce que je reçois:
mul = 1
for i in range(10, 200 + 1):
mul *= i
string = str(mul)
string = string[::-1]
count = 0;
for c in str(string):
if c == '0':
count += 1
else:
break
print count
print mul
Je parie qu'il est possible d'écrire le même plus élégant dans un langage comme un python.
ps: oui, il est un devoir, mais pas le mien - je viens d'aider un gars ;-)
Serait bien si je pouvais comprendre comment cela fonctionne. –
Il compte le nombre de cinq et deux dans la factorisation en nombres premiers de la factorielle itérative (donc 10! Aurait 2 et 8). Puisque 5 * 2 = 10, et qu'aucun autre nombre premier ne peut être multiplié par 10, le nombre de 10 dans la factorisation (qui est le nombre de zéros) est le minimum du nombre de cinq et le nombre de deux dans le premier factorisation Le nombre de cinq et cinq est beaucoup plus petit que le factorial calculé. – irrelephant
Bien que la question appelle 10-200, c'est certainement une meilleure approche pour des nombres beaucoup plus importants. Pour les plus petits nombres, faire la multiplication s'avère être plus rapide (au moins quand j'ai fait des tests de temps). – snapshoe