问题:N的阶乘(N!)中的末尾有多少个0?
例如:N = 5,N! = 120.末尾有1个0.
解答:将N的阶乘看为10的M次方的乘积,末尾就有M个0。将N的阶乘进行分解可以得到:2的X次方,3的Y次方,5的Z次方,7的T次方的
乘积。10=2*5,所以M只和X、Z有关,每一对2和5相乘都能得到10,于是M=min(X,Z),而一般情况下X>Z,即偶数个数肯定要大于5的倍数,因此可以近似成M=Z。通过Z可以得到M的值,有两种方法实现。
方法一
要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数。然后求和
|
方法二:
Z = N/5 + N /(5*5) + N/(5*5*5).....知道N/(5的K次方)等于0
公式中 N/5表示不大于N的数中能被5整除的数贡献一个5,N/(5*5)表示不大于N的数中能被25整除的数再共享一个5.......
|