【发布时间】:2017-07-10 01:46:56
【问题描述】:
我正在尝试根据this 问题使用 python 计算阶乘中尾随零的数量。到目前为止,我的解决方案如下所示:
import math
def zeros(n):
return len(str(math.factorial(n))) - len(str(math.factorial(n)).rstrip('0'))
这适用于较小的数字,但其中一项测试是1000000000!,我的算法效率低下导致系统崩溃。
过去我一直在努力提高算法的效率,我希望能提供有关此主题的任何一般性建议,以及任何可以使该算法更高效的具体指示。
【问题讨论】:
-
数字末尾的0是数字中出现因子10的次数。你绝对应该使用这个属性来获得一个有效的算法来回答这个问题。
-
见this
-
由于问题已关闭,我无法发布我正在输入的答案,这有点弱。我的回答侧重于消除程序冗余(在这种情况下,它不能与数学减少相比,而是一种更通用的方法)。链接:pastebin.com/4a51WQgZ
-
这似乎很明显,但这些是 十进制 零(即基数 10 或基数 10)。对于不同的基地,答案是不同的。
标签: python algorithm performance primes factorial