Stirling 公式
也就是说:
Stirling公式的意思是,当n足够大时,n! 计算非常困难。 关于n有很多! 的等式,但无法很好地估计阶乘结果。 特别是n大的话,误差会变得非常大。 然而,可以利用Stirling公式将阶乘转化为幂函数,从而更好地估计阶乘的结果。 而且n越大,估计越准确。
用Stirling公式求解n! 的位数:容易知道的整数n的位数为[lgn] 1。 使用Stirling公式计算n! 的位数时,可以两边取对数,为:
所以n! 的位数如下。
代码:
# include iostream # include cstdio # include cstring # include cmath # include algorithm # define pi 3.1415926535898 # definee 2.71828 typedef long ll; int main ()//n! 的位数log(n! (1int n; scanf('%d ',n ); LL ans; ans=log10(2.0*pi*n )/2.0n*log10 ) n/e ) 1; printf(%lld(n ),ans ); 返回0; () ) ) ) )。