对于求一个大数的阶乘的位数一般有两种方法:
第一种:
lg(N!)=[lg(N*(N-1)*(N-2)*......*3*2*1)]+1
=[lgN+lg(N-1)+lg(N-2)+......+lg3+lg2+lg1]+1
用C语言实现:
#include<stdio.h>
#include<math.h>
int main()
{
int n;
double sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
sum=sum+log10(i);
}
printf("%d\n",(int)sum+1);
return 0;
}
第二种:
用Stirling公式计算n!结果的位数时,可以两边取对数,
得: lo