阶乘计算器(n!・排列nPr・组合nCr)
精确计算非负整数n的阶乘n!。同时支持排列(nPr)与组合(nCr),使用BigInt实现无位数限制的精确整数计算。附带0〜20的阶乘速查表。
0〜20 的阶乘速查表
汇总了0!到20!数值的一览表。20!已经是19位数。
| n | n! |
|---|---|
| 0 | 1 |
| 1 | 1 |
| 2 | 2 |
| 3 | 6 |
| 4 | 24 |
| 5 | 120 |
| 6 | 720 |
| 7 | 5,040 |
| 8 | 40,320 |
| 9 | 362,880 |
| 10 | 3,628,800 |
| 11 | 39,916,800 |
| 12 | 479,001,600 |
| 13 | 6,227,020,800 |
| 14 | 87,178,291,200 |
| 15 | 1,307,674,368,000 |
| 16 | 20,922,789,888,000 |
| 17 | 355,687,428,096,000 |
| 18 | 6,402,373,705,728,000 |
| 19 | 121,645,100,408,832,000 |
| 20 | 2,432,902,008,176,640,000 |
阶乘、排列与组合
阶乘 n! 是把1到n的所有整数相乘所得的值,表示**把n个事物排成一列的排法总数**。5! = 120、10! = 3,628,800,n只要稍微增大,数值便会爆炸式增长。到20!已超过18位数,普通的浮点数已无法精确表示。
本工具**使用 BigInt 计算,位数不设上限,给出严格的整数值**。除阶乘外,还支持排列 nPr(从n个中取r个并加以排列的情形数)与组合 nCr(从n个中取r个的情形数,不计顺序)。两者的关系为 nPr = n! ÷ (n−r)!、nCr = n! ÷ (r! × (n−r)!),**唯一的差别就在于是否区分排列的顺序**。并附有0~20的阶乘速查表。
计算的步骤
- 选择计算的种类 从阶乘(n!)、排列(nPr)、组合(nCr)三个标签页中选择。
- 输入 n 0以上、10,000以下的整数。上限是出于计算量的考虑。
- 输入 r(排列与组合时) 请输入0以上、不超过n的整数。
- 查看结果 即使位数很多也会完整显示为严格的整数,不作省略。
用好本工具的小技巧
- 阶乘(n!)是1到n所有整数的连乘积。例如:5! = 5×4×3×2×1 = 120。特别规定 0! = 1。
- 排列(nPr)表示从n个不同元素中选出r个并「排序」的方法数。由于要区分顺序,其值总是不小于对应的组合数。例如:5P2 = 5×4 = 20。
- 组合(nCr)表示从n个不同元素中「选出」r个(不区分顺序)的方法数。例如:5C2 = 10(将5P2 = 20除以2个元素的排列方式数2!=2得到)。
- 阶乘增长极其迅速,20!已达19位数,100!更是高达158位。本工具采用BigInt,即使n很大也能精确计算,无误差。
- 若n过大(超过10,000),出于计算成本考虑会提示错误,这是为防止浏览器卡死而设置的实用上限。
这些场景会用到
求解概率问题
可用于核对抽签、牌型组合等求情形数的题目。
计数排法总数
座位安排、赛程配对等实务上的计数也用得上。
求二项式系数
nCr 正是二项式定理的系数,可直接查看帕斯卡三角形中的数值。
核对程序的计算
把自写的阶乘函数在较大 n 下的结果与严格值比对,确认有无溢出。
阶乘相关的术语
- 阶乘(n!)
- 从1到n的整数之积。**规定 0! = 1**(依据空积为1的约定)。
- 排列(nPr)
- 从n个中取r个并**加以排列**的情形数,由 n! ÷ (n−r)! 求得。
- 组合(nCr)
- 从n个中**取出**r个的情形数,不区分顺序,由 n! ÷ (r! × (n−r)!) 求得。
- 二项式系数
- 展开 (a+b)^n 时各项的系数,与 nCr 相同。
- BigInt
- JavaScript 中不受位数限制地处理整数的类型。**普通数值类型超过2^53后便会失去精确性。**
- 斯特林近似
- 在 n 较大时近似 n! 的公式,用于不需要严格值的场合。
常见问题
闲话 ― 阶乘符号「!」为什么是感叹号
表示阶乘的符号「!」据说是1808年法国数学家克里斯蒂安·克兰普(Christian Kramp)在其著作中引入的。在此之前,不同数学家各自使用五花八门的表示法,并无统一标准。关于克兰普选择这一符号的原因说法不一,但流传较广的说法是,它表达了对阶乘数值急剧增长的「惊叹」之情。
阶乘的急速增长也体现在斯特林近似公式(n! ≈ √(2πn)(n/e)ⁿ)中,该公式被广泛用于统计学、概率论、组合数学等领域的近似计算。事实上,对于精确计算n!都十分困难的巨大n值,这一近似公式在实际应用中发挥着重要作用。
排列、组合的思想是解决许多日常概率问题的基础,例如彩票中奖概率的计算,以及一副扑克牌的洗牌方式数量(52张扑克牌的排列方式共有52!种,约8×10⁶⁷种)。组合数nCr也出现在「帕斯卡三角形」的每一行数字中,并与二项式定理((a+b)ⁿ的展开)密切相关。