转自百度空间:http://hi.baidu.com/zwb_x_x_x/blog/item/11ca9bf147cbf3ca7831aaea.html

 

由N!谈起

N!是指N的阶乘(Factorial) ,即N! = N(N-1)(N-2)......(1),由N乘至1,而我们亦定义0! = 1。

我们知道这N!也不会太少,当N越大,N!越大得惊人,单是50!已有65个数位(Digit)了。大家定会以为找其素因子分解式(Prime Factorization)可不容易了,原来我们亦有方法较简易的把其素因子分解式完完全全的列为出来。

原来N!中素数p的指数h是这样求出来的:h = [N/p] + [N/(p 2 )]+[N/(p 3 )]+.......

其中符号[a]意为a的整数部份(Integral Part),如[1.23] = 1。若p s >N,则[N/(p s )] = 0,我们也不用理会了。

原因是这样的,在N!中有素数p的倍数的个数为[N/p] ,而含有多一个p 2的倍数的个数为[N/(p 2 )],这样每一个p 2的倍数是会多给一个素因子p的,如此下去,我们便得出上述关于素数p的指数h的公式来我们再不少于N的素因子一一计算其相关h值,便可把N!分解。

看看这一个简例吧!试求20!的分解式。

先定素因子,不多于20的素数有:2、3、5、7、11、13、17和19。

再察看它们的指数

2的指数[20/2]+[20/4]+[20/8]+[20/16]=10+5+2+1=18
3的指数[20/3]+[20/9]=6+2=8
5的指数[20/5]=4
7的指数[20/7]=2
11的指数[20/11]=1
13的指数[20/13]=1
17的指数[20/17]=1
19的指数[20/19]=1

最后是列写答案: 20! = (2 18 )(3 8 )(5 4 )(7 2 )(11)(13)(17)(19)

大家也可用上述方法求取30!、 50!甚至100!的分解式也不难了吧。

最后,顺便一提,到底20!最未有多少个零?我们只要查看2和5的指数中最小的一个便是答案,即是8,20!的最后带着8个0的尾巴。为什么?因为10 = 2*5 ,若数值在未位多一个零,即多一对素因子2和5。