1000的阶乘远远超过了long型变量的长度,这里你可以用gmp或者类似的大数库函数进行计算。
第二: 运算1000的阶乘其实等价于计算1000阶乘中因数5的个数。
比如计算阶乘n的时候,
if n<5
结尾0的个数为0
if n>=5
n!=5(k)*5(k-1)*....10*5*x。其中x为不含有因数5的数。举个例子当n==10的时候
10!=5(2)*5(2-1)*(8*7*6*4*3*9*2) 其中的(8*7*6*4*3*9*2)就是x。
显而易见5>2,所以每当出现5则必然会有2的出现。
所以10!后面有2个0.这里我们证明出了0的个数等价于因子5的个数。
可以列出一个函数。f(y)=g(y)
f(y)等于0的个数,g(y)等价于因子5的个数
f(n!)=g(n!)等价于f(n!)=g(5^k*k!*x)=k+g(k!)
所以可以得出
f(1000!)=g(1000!)=g(5^200*200!*x)=200+f(200!)=200+f(5^40*40!)=200+40+f(40!)=240+f(5^8*8!)=248+f(5^1+1!)=249
第二: 运算1000的阶乘其实等价于计算1000阶乘中因数5的个数。
比如计算阶乘n的时候,
if n<5
结尾0的个数为0
if n>=5
n!=5(k)*5(k-1)*....10*5*x。其中x为不含有因数5的数。举个例子当n==10的时候
10!=5(2)*5(2-1)*(8*7*6*4*3*9*2) 其中的(8*7*6*4*3*9*2)就是x。
显而易见5>2,所以每当出现5则必然会有2的出现。
所以10!后面有2个0.这里我们证明出了0的个数等价于因子5的个数。
可以列出一个函数。f(y)=g(y)
f(y)等于0的个数,g(y)等价于因子5的个数
f(n!)=g(n!)等价于f(n!)=g(5^k*k!*x)=k+g(k!)
所以可以得出
f(1000!)=g(1000!)=g(5^200*200!*x)=200+f(200!)=200+f(5^40*40!)=200+40+f(40!)=240+f(5^8*8!)=248+f(5^1+1!)=249
想抽苏烟了。