Я думаю: возьмите 60 в качестве примера (это один из примеров ввода в связанных задачах ). Вы правы в предположении в своем коде, что для каждого числа от 1 до 60 вам нужно только учитывать, сколько раз оно делится на 5, так как всегда будет достаточно чисел, кратных 2, чтобы у вас было столько нулей. Итак, сколько чисел от 1 до 60 делится один раз на 5? Ответ: 60/5 = 12. Сколько из этих 12 делится на 5 еще раз? 12/5 = 2 (игнорировать любой остаток). Добавьте 12 и 2 (= 14), чтобы записать, что до сих пор мы знаем, что факториал 60 делится на 5 14 раз. И из тех 2, сколько делится в третий раз? 2/5 = 0. Как только мы достигли 0, мы закончили. Ответ был 14 (это согласуется с ответом в примере в ссылке).
Так что сделайте из этого алгоритма способ найти ответ. Я думаю, что это будет несколько быстрее, чем программа, которую вы опубликовали.
Может также оказаться, что вы можете найти не слишком сложную формулу для суммы, которую я вычисляю, чтобы вы могли полностью избежать зацикливания. И, может быть, вы можете найти вдохновение здесь: Геометрическая прогрессия .