又是个关于介乘的问题
求n!的数字位数?
如n=1000000,求how many digits in the result of n!
(另外附加请教:求n!的最后一个非0数,我的算法:先求出n!中5的因子的个数a1,然后求出2的因子的个数a2(有计算公式很容易求2,5因子个数),for(i=1;i<=n,i++){ if(n%2==0){用n除以2,一直除到没有2为因子为止} if(n%5==0){ 用n除以5,一直除到n没有5为因子为止} total=取n最后一位*total} 然后for(i=0;i<a2-a1;i++){total=total*2;total=total最后一位}
最后得到的total就是最后一位非0数,这种方法应该是正确的,但求当n=1000000后速度很慢,求教有没有别的好方法?)
给出算法就好了
推荐阅读
关于最后一位是非0的数,http://expert.csdn.net/expert/icview1.asp?id=1769766
主要是利用规律的,搜索"1222"的旧贴就有.
我认为只要求五的因子,不要求2的因子了。因为数中一般都是偶数,有5就可变0了!
求位数用stirling公式。求非0尾数的问题就是zhangyv提出的。http://expert.csdn.net/expert/topic/1769/1769766.xml?temp=.2003748
cygandti() 实在是谬论
n!=sqrt(2*pi*n)*(n/e)^n*e^(sita/12n),其中0<sita<1
.

讨论区