哪个更大呢? 2^100! 还是 (2^100)! ?
By Long Luo
昨天在B站看到一个数学视频1,比较 \(2^{100!}\) 和 \(2^{100}!\) 的大小。直观感受就是这2个数都非常非常大,但哪个更大无法一眼看出来。
虽然指数爆炸,但阶乘实际上增长的速度比指数更快,如下图1所示:
可以看出阶乘图像 \(y = x!\) 实际上比指数 \(y = e^x\) 要快很多,而 \(y = x^x\) 是最快的。
但具体哪个更大呢?
这个问题有很多种方法,这里展示了4种方法。
对数放缩法 (Zoom)
由于对数2 函数 \(y = \log_{a}{b}\) 当 \(a > 1\) 是单调递增函数,所以比较两个数大小时,可以通过比较两者对数值来实现大小比较。
两边同取对数 \(\log_{2}{x}\) ,
左边:
\[ A = \log_{2}{(2^{100!})} = 100! \]
右边:
\[ B = \log_{2}{2^{100}!}= \log_{2}{2^{100}} + \log_{2}{(2^{100} - 1)} + \dots + 1 + 0 \]
共有 \(2^{100}\) 项,值从 \(0\) 到 \(\log_{2}{2^{100}} = 100\) ,所以
\[ B < 100 \cdot 2^{100} < 128 \cdot 2^{100} = 2^7 \cdot 2^{100} = 2^{107} \]
综合上式,我们只需要比较 \(100!\) 和 \(2^{107}\) 的大小即可。
\(100!\) 至少有 \((100 - 64 + 1) = 37\) 项是大于等于 \(64 = 2^6\) ,也就是 \((2^6)^{37}=2^{222}\) 。
显然可得 \(100! \gg 2^{222} \gg 2^{107}\) 。
故有虽然两个数都非常大,但 \(2^{100!}\) 仍然远远大于 \(2^{100}!\) 。
斯特林公式 (Stirling’s Approximation)
由于存在阶乘,我们可以使用斯特林公式(Stirling’s Approximation)3 来估计。
\[ n! \sim \sqrt{2 \pi n}(\frac{n}{e})^n = \sqrt{2 \pi} n^{\frac{n + 1}{2}}e^{-n} \]
两边同取对数:
\[ \ln{n!} \sim \frac{1}{2} ln(2 \pi) + (n+\frac{1}{2}) ln(n) - n \]
根据上式,可见 \(n\) 足够大时,斯特林公式可以近似为:
\[ \ln(n!) \sim n(ln(n) - 1) \]
则有:
\[ \begin{array}{l} A = ln(2^{100!}) = 100! ln(2) \\ B = ln(2^{100}!) \sim 2^{100}(ln(2^{100}) - 1) = 2^{100}(100 ln(2) - 1) \end{array} \]
由于 \(2^{10} = 1024 \approx 10^3\) ,则有 \(2^{100} \approx 10^{30}\) , 那么 \(B \approx 10^{32} ln(2)\) 。
很明显 \(100! \gg 10^{32}\) ,因此
\[ 2^{100!} \gg 2^{100}! \]