关于这道题,见过两种问法:
- 给定参数n(n为正整数),请计算n的阶乘n!末尾所含“0”的个数。
- (n!%(10^k)) == 0。已知n,求能使上式成立的K的最大值。
问题分析:
显然,对于阶乘这个大数,我们不可能将其结果计算出来,在统计其末尾所含有的“0”的个数。所以必须从其数字特征进行分析。
首先考虑一般的情形。对于任意一个正整数,若对其进行因式分解,那么其末尾的“0”必可以分解为2*5。这里每一个“0”必然和一个“2”与“5”对应。这里是阶乘,含有2的分解比含有5的分解多很多。所以这道题的是问:正整数n因式分解中“5”的个数。例如6的阶乘:
6! = 6 * 5 * 4 * 3 * 2 * 1
分解后
6! = (3*2)*5*(2*2)*3*2*1 = 5*3*3*2*2*2*2*1
从上面的例子可以看出,分解之后6的阶乘含有一个5,四个2,2的个数5多很多。
对于n<5,因为不含分解因子“5”,所以末尾没有0。
但是对于n>=5的情况呢?我们可以把含有分解因子为“5”的给提出来,把n!变为
n! = [5m*5(m-1)*....*10*5]*a,a是一个不含因子“5”的整数,其中n = 5m + r (0<= r <= 4)
例如26的阶乘: