题目:给定一个整数n,那么n的阶乘n!末尾有多少个0呢?例如:n=10,n!=362800,n!的末尾有两个0
如果直接计算出n的阶乘再判断的话不仅耗时而且还会有溢出的情况。
首先考虑N!=K*10^M且K不能被10整除,那么就可以知道N!末尾有M个0。再考虑对N!进行质因数分解,N!=(2^X)*(3^Y)*(5^Z)...,由于1-=2*5,所以M只与X和Z有关,每一对2和5就能得到一个10,所以M=Min(X,Z)。不难看出X>Z,因为能被2整除的数比能被5整除的数多得是,所以得出M=Z