利用斯特林(Stirling)公式求解n!的位数

转自http://www.csufox.com/stirling.html

利用斯特林(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); (编程更方便)

(注意:当n=1时,算得的结果为0)

n!的估计:

在高德纳的《计算机程序设计艺术》一书中,对n!的估计:
n! = sqrt(2*π*n) * ((n/e)^n) * (1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3));

你可能感兴趣的:(编程)