当前位置:首页 » 多媒体相关

又是个关于介乘的问题


求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后速度很慢,求教有没有别的好方法?)  
   
  给出算法就好了  
   
 

推荐阅读

  • 三星罗马系列液晶电视全球销量突破百万大关 [详细内容]
  • 三星欲放弃等离子扩产 有意投入液晶电视怀抱 [详细内容]
  • 宜宾出台2005至2007年审计信息化发展规划 [详细内容]
  • 三星电子将支持意大利电信于明年部署WiBro网 [详细内容]
  • 赛门铁克推依从管理软件 能有效降低成本 企业软件频道 [详细内容]
  • 安徽淮南市审计局推进审计信息化建设 [详细内容]
  • 关于小灵通发短信与号码默认值的设置 [详细内容]
  • 网友回答:
    网友:zhangyv

    关于最后一位是非0的数,http://expert.csdn.net/expert/icview1.asp?id=1769766

    网友:zhangyv

    主要是利用规律的,搜索"1222"的旧贴就有.

    网友:cygandti

    我认为只要求五的因子,不要求2的因子了。因为数中一般都是偶数,有5就可变0了!

    网友:riemann

    求位数用stirling公式。求非0尾数的问题就是zhangyv提出的。http://expert.csdn.net/expert/topic/1769/1769766.xml?temp=.2003748

    网友:huangry

    cygandti()   实在是谬论

    网友:riemann

    n!=sqrt(2*pi*n)*(n/e)^n*e^(sita/12n),其中0<sita<1

    .

    讨论区

    Login