利用斯特林(Stirling)公式求解n!的位数:
易知整数n的位数为[lg10(n)]+1.
用Stirling公式计算n!结果的位数时,可以两边取对数,得:
log10(n!) = log10(2*PI*n)/2+n*log10(n/E);
故n!的位数为
res=log10(2*PI*n)/2+n*log10(n/E)+1
或者为:
long result = (long)((log10(sqrt(4.0*acos(0.0)*n))+n*(log10(n)-log10(exp(1.0))))+1);(编程更方便)