跳转到正文

阶乘计算器

输入一个整数 n,即可逐位精确得到 n!,同时得到它的双阶乘 n!!、位数和末尾零个数,以及斯特林近似值及其误差。小数通过伽马函数计算。免费,无需注册,结果不做任何舍入。

0 至 10,000 之间的整数。像 4.5 这样的小数会使用伽马函数计算。

结果

2,432,902,008,176,640,000

n!

19

n! 的位数

4

末尾零

3,715,891,200

双阶乘,n!!

≈ 2.4227868 × 10^18

斯特林近似

0.416%

比 n! 低多少

0.000831%

加入 1/(12n) 修正后的误差

计算过程

  • 20! = 20 × 19 × … × 2 × 1 = 20 × 19!,因此每个阶乘都等于前一个乘以 20。
  • 每个末尾零都来自因数 10 = 2 × 5,而因数 5 比因数 2 少。计数如下:⌊20/5⌋ + ⌊20/25⌋ + … = 4。
  • 双阶乘每隔一个数相乘:20!! = 20 × 18 × 16 × 14 × 12 × 10 × 8 × 6 × 4 × 2 = 3,715,891,200。
  • 斯特林公式 √(2πn) (n/e)ⁿ 给出约 2.4227868 × 10^18,比精确值低 0.416%。

如何使用阶乘计算器

  1. 1. 输入 n。 任意 0 至 10,000 之间的整数。结果会随输入实时更新。
  2. 2. 读取精确值。 较小的阶乘会按千位分隔显示。较大的阶乘会以科学记数法给出标题数值,并在一个可滚动的方框中列出每一位数字,旁边附有复制按钮。
  3. 3. 查看其他结果。 您还会得到位数、末尾零的个数、双阶乘 n!!,以及斯特林近似值及其低于 n! 的程度。
  4. 4. 试一个小数。 对于 4.5 这样的数,计算器会返回 Γ(5.5) = 4.5!,因为伽马函数把阶乘扩展到了除负整数以外的所有数。

什么是阶乘

非负整数 n 的阶乘写作 n!,它是从 1 到 n 之间所有整数的乘积:5! = 5 × 4 × 3 × 2 × 1 = 120。它计算的是把 n 个不同的物品排成一行的方法数——三本书可以有 3! = 6 种摆放顺序——它也是排列、组合和二项式定理的基础。每个阶乘都等于前一个乘以 n:n! = n × (n − 1)!。

为什么 0! 等于 1? 按照 n! = n × (n − 1)! 的规则一直推到 n = 1,得到 1! = 1 × 0!,只有 0! = 1 时才成立。这也符合计数的含义(什么都不排列只有一种方法),并且按约定,空乘积等于 1。

值得记住的阶乘
nn!末尾零
010
110
220
360
4240
51201
67201
75,0401
840,3201
9362,8801
103,628,8002
151,307,674,368,0003
202,432,902,008,176,640,0004

末尾零:勒让德公式

n! 末尾的一个零来自因数 10 = 2 × 5。因数 2 总是比 5 多,所以末尾零的个数等于 1 × 2 × … × n 中因数 5 的个数。计数时先数 5 的倍数,再加上 25 的倍数(每一个都隐藏着第二个 5),然后是 125 的倍数,依此类推:零的个数 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + …。以 100! 为例,即 20 + 4 = 24 个末尾零。100! 共有 158 位数字。

斯特林近似

对于较大的 n,n! 可以近似为 √(2πn) (n/e)ⁿ。这个近似值总是略低于真实值,相对误差约为 1/(12n):在 n = 10 时低 0.83%(3.5986956 × 10⁶ 对比 3,628,800),在 n = 100 时低 0.083%(9.3248476 × 10¹⁵⁷ 对比 9.3326215 × 10¹⁵⁷)。乘以 (1 + 1/(12n)) 可以消除大部分误差。正是这种近似让我们仅凭对数就能估算巨大阶乘的规模。

双阶乘与伽马函数

双阶乘 n!! 从 n 开始,每隔一个数相乘:9!! = 9 × 7 × 5 × 3 × 1 = 945,而 8!! = 8 × 6 × 4 × 2 = 384。它不是 (n!)!。按约定 0!! = 1,并且 n!! × (n − 1)!! = n!。伽马函数 Γ(x) 把阶乘推广开来:对于整数 n 有 Γ(n + 1) = n!,它对小数同样有定义,例如 (½)! = Γ(1½) = √π / 2 ≈ 0.8862。它在 0 和负整数处没有值,因此 (−1)! 与 (−2)! 不存在。

计算机上阶乘能算到多大?

20! = 2,432,902,008,176,640,000 是能放进带符号 64 位整数的最大阶乘,170! ≈ 7.26 × 10³⁰⁶ 是能放进双精度浮点数的最大阶乘。本计算器使用任意大小的整数,因此 10,000! 能被精确算出,共 35,660 位数字。

常见问题

为什么 0! 等于 1?
因为阶乘规则 n! = n × (n − 1)! 必须在 n = 1 时成立,这给出 1 = 1 × 0!。它也符合计数的含义:零个物品只有一种排列方式,而不含任何数的空乘积为 1。
100! 末尾有几个零?
24 个。数一数因数 5:⌊100/5⌋ = 20 个 5 的倍数,加上 ⌊100/25⌋ = 4 个 25 的倍数,共 24 个,而因数 2 的数量足以与它们配对。
负数或小数能求阶乘吗?
负整数不能,因为伽马函数在那里有极点。小数和非整数的负数可以通过 Γ(n + 1) 计算:4.5! ≈ 52.34,(−0.5)! = √π ≈ 1.7725。
什么是双阶乘?
n!! 是从 n 开始、每隔一个数(步长为 2)一直乘到 1 或 2 的乘积,所以 7!! = 7 × 5 × 3 × 1 = 105,10!! = 10 × 8 × 6 × 4 × 2 = 3,840。它不同于 (n!)!,后者是一个极其巨大的数。
52 张扑克牌有多少种排列方式?
52! = 8.0658175… × 10⁶⁷,是一个 68 位数。任何充分洗过的牌组,在实际意义上都是从未有人见过的排列。
斯特林近似有多准确?
它的相对误差约为 1/(12n),因此在 n = 10 时偏低 0.83%,在 n = 100 时偏低 0.083%。计算器会显示您的 n 对应的精确误差,以及加入 1/(12n) 修正之后的误差。

相关工具

数学计算器中的更多工具