有效地计算阶乘中数字的尾随零

Efficiently count trailing zeros of numbers from a factorial

我正在尝试计算每个 this 问题的 python 阶乘中尾随零的数量。到目前为止,我的解决方案如下所示:

import math
def zeros(n):
    return len(str(math.factorial(n))) - len(str(math.factorial(n)).rstrip('0'))

这适用于较小的数字,但其中一项测试是 1000000000!,我的算法效率低下导致系统崩溃。

过去我一直在努力提高算法效率,如果能就此主题提出任何一般性建议,以及任何可以使该算法更高效的具体指示,我将不胜感激。

与其直接评估计算长度的阶乘,不如使用代数性质。

例如,与其累加总数,不如跟踪 2 和 5 的倍数。