python之N阶乘结果末尾有几个0(算法)

之前写过一个阶乘末尾0个数的计算方法,是要把阶乘算出来

python之N阶乘结果末尾有几个0

 

今儿想到若阶乘最后为0,则必须有2*5,相当于把每个阶乘因子分解并计算2和5的个数

现实中2的个数肯定大于5,所以只需要计算5的个数

对于一个阶乘来说,因子5的个数应该为数字n//5,若为25、125这些为5的次方的数字,则还需要加上n//25、n//125,那么可以用推导式写如下:

 

def factorial(factorialNum):
    return factorialNum ==  0 if factorialNum // 5 ==0 else factorialNum // 5 + factorial(factorialNum // 5)

print(factorial(125))

 

posted @ 2020-05-15 16:12  水里的芋头  阅读(1907)  评论(0编辑  收藏  举报