He escrito un programa para comprobar si mi pensamiento sobre la solución en papel es correcto (y lo es).Simplifique este código python
La tarea: cuántos ceros se encuentra en la parte posterior de la multiplicación de todos los números de 10 a 200.
Es 48 y es un sencillo de calcular manualmente.
Nunca escriba en pitón en serio y esto es lo que me pasa:
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
apuesto a que es posible escribir la misma más elegante en un lenguaje como una pitón.
PS: Sí, se trata de una tarea, pero no la mía - me ayudó a un chico ;-)
Sería bueno si pudiera descubrir cómo funciona. –
Cuenta el número de cinco y dos en la factorización prima del factorial de forma iterativa (¡entonces 10! Tendría 2 cincos y ocho doses). Como 5 * 2 = 10, y ningún otro número primo se puede multiplicar por 10, el número de 10 en la factorización (que es el número de ceros finales) es el mínimo de la cantidad de cincos y el número de dos en el primo factorización. El número de cincos y de dos es mucho más pequeño que el factorial calculado. – irrelephant
Aunque la pregunta sí requiere 10-200, este es definitivamente un mejor enfoque para números mucho más grandes. Para números más pequeños, hacer la multiplicación resulta ser más rápido (al menos cuando ejecuté pruebas timeit). – snapshoe