如何估算阶乘的大小?
How Big Are Factorials?

前几天我在想 52! 到底有多大,这促使我思考如何在不依赖计算器或电脑的情况下估算阶乘。其实,估算阶乘位数(即数字大小)背后有一些非常有趣的数学原理。文章首先给出了估算方法,随后深入探讨了 Gamma 函数和 Stirling 公式的推导过程。通过 Laplace 方法,我们可以从 Gamma 函数积分中推导出 Stirling 近似公式,进而利用对数计算阶乘的位数。以 52! 为例,估算结果与实际值 68 位惊人地接近。在处理这种天文数字时,误差几个位数通常无关紧要,但这套数学工具却能让我们快速把握数量级。
在像这样处理巨大数字的估算中,误差几个位数通常不是什么大问题。
- Sharlin
估算 n! 位数的一个快速粗略近似值是 n lg n,它通过不等式 1 * 2 * … * n ≤ n * … * n 给出了 n! 的上界。
(许多人在算法课上都对这个近似值很熟悉。)
如果需要更紧的界,可以使用 n lg n - n/2,或者如果你愿意,用 ln 10 的更好近似值来替代 1/2。这源于斯特林公式(Stirling's approximation),该公式指出 ln n! = n ln n - n + O(ln n)。
- ninju
作者在文章开头随口提到的 52! 触发了一段陈年记忆,让我想起了很多年前看到的一个网页:
https://czep.net/weblog/52cards.html
有人知道怎么判断这个网页的年龄吗?(它肯定至少有 20 年历史了)
- movpasd
斯特林公式在统计力学中也应用广泛,因为你经常需要计算状态空间大小的对数,这意味着大量的组合数学,进而涉及大量的阶乘。此外,它是连续函数,所以你可以进行微积分运算。