Factorial Trailing Zeroes
题意
给定一个数字n,求n!的后缀零
解法
我们可以发现,后缀零是由2和5的乘积产生的,我们可以将n!进行分解,用num2来表示分解后2的个数,num5来表示分解后5的个数,那么最后的结果就是min(num2, num5).通过分解比较小的几个阶乘,比如 5!=5*4*3*2*1 = 2^3*5^1*3,含有2阶乘的个数要大于5的,则当数字越来越大的时候,2的个数更加要超过5,所以我们只要看5的个数即可。那么n!中含有因子5的个数是多少呢?
经过检验可以得知,应该为floor(n/5),但是有几个例外的情况,就是比如25(55),125(55*5)…..这些个含有5的个数是大于floor(n/5)的,所以当n/5后,我们还要检验n/25,n/125含有5的情况,故用一个while循环不断floor(n/5)直到n为0
代码
|
|