2.2关于阶乘的一点知识
问题1:求 N!末尾有多少个0。
问题2:N!中二进制表示中最低位1的位置。
首先对于问题1:
对于N!的末尾有多少个0这个问题。要追溯到算术基本定理:
算术基本定理
任何一个大于1的
自然数N,都可以唯一分解成有限个质数的乘积 N=(P_1^a1)*(P_2^a2)......(P_n^an) , 这里P_1<P_2<...<P_n是
质数,其诸方幂 ai 是正整数。
以上是百度百科对于该定理的描述。由此我们可以把一个数看做是由有限个素数因子构成的。那么N!也不例外。设N!=M。
M = S*10^n = S*(2*5)*(2*5)*(2*5)...2*5有n队。S尾部是不含0的。所以原问题就转化为寻找N!中有多少对2和5的因子了。
也就是说寻找2和5的个数中哪个最少。取最少的那个(原先描述最少用最小,果断容易引起误解。)。对于这个问题。还有一步可以通过思维化简问题的就是2和5的因子到底哪个更少呢?明显是5的。所以我们要寻找数中5的因子的个数。
法1:从数的角度
法2:从组合数的角度(结构)
第2章 数字之魅——数字中的技巧
原文:http://www.cnblogs.com/Milkor/p/4348319.html