Я написал программу для проверки правильности моей мысли о решении на бумаге (и это так).Упростите этот код python
Задача: сколько нулей в спину умножения всех чисел от 10 до 200.
Это 48, и это просто вычислить вручную.
Я никогда не пишу на питоне серьезно и это то, что я получаю:
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
Я держал пари, что можно написать то же самое более элегантно на таком языке, как питон.
пс: да, это домашнее задание, но не мой - я просто помог парню ;-)
Было бы неплохо, если бы я мог понять, как это работает. –
Он подсчитывает количество пятерок и двойников в простой факторизации факториала итеративно (так что 10! Будет иметь 2 пятых и 8 двоек). Так как 5 * 2 = 10, и никакие другие простые числа не могут быть умножены на 10, число 10 в факторизации (которое является числом конечных нулей) является минимумом числа fives и числа двойников в прайме факторизации. Количество пятерок и двойников намного меньше расчетного факториала. – irrelephant
Хотя вопрос действительно требует 10-200, это, безусловно, лучший подход для гораздо большего числа. Для меньших чисел, фактически выполнение умножения делает ауты быстрее (по крайней мере, когда я запускал тесты времени). – snapshoe