有效地计算阶乘中数字的尾随零
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 的倍数。
我正在尝试计算每个 this 问题的 python 阶乘中尾随零的数量。到目前为止,我的解决方案如下所示:
import math
def zeros(n):
return len(str(math.factorial(n))) - len(str(math.factorial(n)).rstrip('0'))
这适用于较小的数字,但其中一项测试是 1000000000!
,我的算法效率低下导致系统崩溃。
过去我一直在努力提高算法效率,如果能就此主题提出任何一般性建议,以及任何可以使该算法更高效的具体指示,我将不胜感激。
与其直接评估计算长度的阶乘,不如使用代数性质。
例如,与其累加总数,不如跟踪 2 和 5 的倍数。