Java 算法编程 N阶乘最后总位数问题 分类: 编程算法题目 2015-08-06 20:05 4人阅读 评论(0) 收藏

输入任意一个数字N(N>=1) 算出N的阶乘(N!)一共有多少位

比如输入10
10! = 3628800
10的阶乘是 3628800
位数为7

在比如输入25
25! = 15511210043330985984000000
一共有 26位

注意不能把某个数的阶乘算出在统计位数



这里用到了 斯特林公式,来自斯特林公式

 如果用斯提林公式两边取对数,

   log10(n!) = log10(2*PI*n)/2+n*log10(n/E);


   故n!的位数为 log10(2*PI*n)/2+n*log10(n/E)+1(注意:当n=1时,算得的结果为0)

   另一种基本解法 思路
   n的位数为[lg10(n)]+1
   n!的位数为[lg10(n*(n-1)*(n-2)*…..*1)]+1=[lg10(n)+lg10(n-1)+lg10(n-2)   +….+lg10(1)]+1

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-08-06 20:05  nimdanoob  阅读(208)  评论(0)    收藏  举报