跳到主要内容
CalcMax

阶乘计算器

范围:0 – 170

结果

120.000000

阶乘

位数
3
末尾零
1

阶乘计算器把一个整数从 1 连乘到 n,再给出两个说明它有多大的读数:结果的位数,以及末尾零的个数。5 的阶乘是 120——三位数,末尾一个零。这个值很快就不适合直接印出来,21 以上主读数改用科学计数法,但位数与末尾零仍然精确,因为这两个数是从公式算出来的,不是去数那串印出来的数字。0 的阶乘按定义等于 1(空积),而 170 是这一页能收的最大输入:171 的阶乘超出了双精度能表示的范围,所以拒收,而不是给出一个 Infinity。

0 到 12 的阶乘

n阶乘位数末尾零
0110
1110
2210
3610
42420
512031
672031
7504041
84032051
936288061
10362880072
113991680082
1247900160092

前十三个阶乘,两个读数并排列出。这些行是为了让增长看得见:第七行过了一千,第十二行过了一亿,而位数一格格往上爬,末尾零也一直等到出现 5 才不是零。顺着最后一列往下读,能看出为什么是 5、10、12 在起作用而 11 不在。每一格都是纯数,所以这张表在全部十个语言里长得一样。

公式

n! = 1 × 2 × … × n 位数 = ⌊lg(n!)⌋ + 1 末尾零 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + …

n
要求阶乘的那个数,取 0 到 170 之间的整数。它同时也是因数的个数,因为连乘是从 1 一路乘到 n。上界不是显示上的取舍:171 的阶乘已经超过双精度能表示的最大值,再往上的输入没有答案可给。
n!
阶乘本身,从 1 到 n 的每一个整数相乘的结果。它比指数增长还快:5 的阶乘是 120,10 的阶乘已经是 3628800。一旦超过一百万,面板上的答案就换成科学计数法——这样既保住了量级,也不必印出一百多位数字。
位数
这个阶乘有多少位十进制数字。它由对数求和得到,不是去数某个印出来的串的长度,所以在取值范围的顶端也照样准确——那里印出来的阶乘只剩七位有效数字,数它会数错。
末尾零
阶乘末尾有几个 0。每一个末尾零都要一个 10,而一个 10 要一个 2 配一个 5;阶乘里 2 远比 5 多,所以这件事完全由 5 决定——5 的倍数各出一个,25 的倍数再出一个,125 的倍数再出一个。

要的就是那个数本身时用这一页:一整套东西的排列方式有几种、数列里的某一项是多少、一个连乘积有多大。若是从一个池子里取若干个——组合数或排列数——那是先用阶乘相除,答案在组合与排列那两页。

算例

  1. 5 的阶乘

    1. 从 1 往上乘:1 × 2 = 2
    2. 2 × 3 = 6
    3. 6 × 4 = 24
    4. 24 × 5 = 120
    5. 120 有三位数字、末尾一个零,所以两个读数分别是 3 与 1

    三个读数都能用眼睛核对的最小的一格。乘出来的数短到能读全,位数与末尾零也一眼看得见——首屏开在这个值上就是因为这个。

  2. 读数改用科学计数法的那一格

    1. 从 1 连乘到 20,精确值是 2432902008176640000
    2. 这是十九位数,所以位数读数是 19
    3. 其中四位是末尾的零,由 5、10、15、20 里的 5 贡献
    4. 面板把乘积印成 2.432902 × 10¹⁸,而不是那串十九位数字

    印出来的值从这一格开始不再是精确值。面板上的七位是同一个数的前七位有效数字,所以三个读数说的是同一件事,只是其中一个短到能印出来。21 以下印出来的乘积是精确的。

  3. 100 的阶乘末尾有多少个零

    1. 数 100 以内 5 的倍数:20 个
    2. 加上 25 的倍数,它们各带第二个 5:4 个
    3. 再加上 125 的倍数——没有,125 已经超出 100
    4. 20 + 4 = 24 个末尾零
    5. 阶乘本身有 158 位,印成 9.332622 × 10¹⁵⁷

    这一格的答案在那个零的个数上,而它是只看 5 的个数算出来的,与那个数本身无关。100 的阶乘有 158 位,就算全部印出来,也看不出它末尾有几个零。

局限

只收 0 到 170 的整数。负数拒收,因为负整数上的阶乘没有定义——把它推广到别的数上的 Gamma 函数在每一个负整数处都是极点。小数同样拒收。超过 170 时乘积会溢出成无穷大,所以那种输入按名字被拒,而不是给出一个错答案。21 以上印出来的阶乘是科学计数法的近似值,不是精确整数;位数与末尾零不受影响,它们合起来描述了一个数字没被全部印出来的数有多大。这一页不算组合数与排列数,它给的是那两页赖以计算的阶乘。

常见问题

阶乘是什么?
从 1 一直乘到你给的那个数的连乘积。5 的阶乘就是 1 × 2 × 3 × 4 × 5 = 120。它数的是一组互不相同的元素一共有几种排法,所以它出现在计数与概率里,而不是出现在测量里。
0 的阶乘为什么等于 1?
因为它是空积——没有东西要乘,而让乘积不变的那个值就是 1。这个约定不是硬凑的:它让「什么都不排」恰好有一种排法这个说法成立,也让 n! = n × (n−1)! 这条递推式在 n 等于 1 时仍然对。
为什么最多只能算到 170?
因为 171 的阶乘比双精度浮点数能表示的最大值还大,算出来是无穷大。这不是显示上的限制,而是 170 以上的输入没有可表示的答案。170 的阶乘本身约是 7.26 × 10³⁰⁶,是一个 307 位的数。
末尾零的个数是怎么数出来的?
数阶乘里有多少个因数 5。一个末尾零要一个 10,一个 10 要一个 2 配一个 5;2 多得用不完,所以由 5 决定。5 的倍数各出一个,25 的倍数再出一个,125 的倍数再出一个。100 的阶乘就是 20 + 4 = 24 个。
为什么用科学计数法印阶乘?
因为 21 以上位数就多到结果面板放不下了——100 的阶乘有 158 位。科学计数法保住了量级。精确的那个整数仍然是另外两个读数在描述的东西:位数告诉你它有多长,末尾零告诉你它怎么收尾。
大数阶乘的位数是多少?
位数那一格给出的是精确值,在这一页收的每一个输入上都精确。它是把对数加起来得到的,不是去量一个印出来的字符串,所以印出来的值是近似的时候它也不会失准。位数永远至少比末尾零的个数多一。

参考资料

相关计算器