跳到主要内容

阶乘计算器

阶乘、排列数、组合数一键算

10!
3628800
排列数 P(10,3)
720
组合数 C(10,3)
120

n! = 1×2×…×n;P(n,k) = n! ÷ (n−k)!(顺序有关);C(n,k) = n! ÷ ((n−k)!·k!)(顺序无关)。使用大整数精确计算,不丢精度。所有计算本地完成。

为什么阶乘不只是「乘着玩」

阶乘看着像数学课本里的小练习,实际用处很广:排列组合、概率统计、抽奖组合数、算法复杂度分析都绕不开它。n! 表示「n 个东西全排列有多少种」;再配合排列数 P(n,k)、组合数 C(n,k),就能回答「选 k 个、排不排顺序」这类问题。

本工具输入 n 即出 n! 精确值,还能顺手算排列数和组合数。

公式长什么样

n!      = 1 × 2 × … × n
P(n,k)  = n! ÷ (n−k)!      顺序有关
C(n,k)  = n! ÷ ((n−k)!·k!)  顺序无关

规定 0! = 1,是为了让组合数、排列数公式在边界(如 k=0 或 k=n)时仍然自洽。

排列和组合到底用哪个

核心差别就一个字:顺序

  • 排列 P(n,k):从 n 个里取 k 个并排顺序。例如抽奖兑奖号码顺序、密码、排队站位——谁先谁后算不同结果。
  • 组合 C(n,k):从 n 个里取 k 个,不看顺序。例如买彩票中奖号码集合、组队选人——只要这批人入选,顺序不重要。

两者关系:C(n,k) = P(n,k) ÷ k!,差的正好是「k 个内部重排」的种数。

本工具怎么用

两个输入框:

  1. n:阶乘的总数(也用作排列组合的 n)
  2. k:选几个(填了才算排列数、组合数)

结果先给 n!;k 合法(0 ≤ k ≤ n)时再给 P(n,k) 和 C(n,k)。n 过大时数字会非常长,属正常。

大数阶乘会不会不准

普通浮点数在 n 较大时会丢精度、变成科学计数法的近似值。本工具用**大整数(BigInt)**逐乘,能给出精确整数结果,不会「约等于」。日常学习和概率计算很少用到几千以上的 n,真要算也能扛。

隐私说明

本工具全程在你的浏览器本地计算,不联网、不上传、不保存你输入的任何数字。

常见问题

0 的阶乘是多少?
0! = 1。这是数学上为了方便组合数、排列数公式自洽而规定的,不是算出来的「空乘积为 1」的直觉延伸。本工具也按此返回 1。
排列数 P(n,k) 和组合数 C(n,k) 有什么区别?
排列考虑顺序,P(n,k) = n! ÷ (n−k)!,用于「抽签排座、密码顺序」这类顺序重要的场景;组合不考虑顺序,C(n,k) = n! ÷ ((n−k)!·k!),用于「抽奖中奖号码、选人组队」这类只看谁入选的场景。两者差一个 k! 的因子。
大数阶乘会不会算不准?
本工具用大整数(BigInt)逐乘,不会像普通浮点数那样在 n 较大时丢失精度或变成科学计数法的近似值,能给出精确整数结果。n 很大时数字会很长,属正常现象。
n 最多能填多大?
主要受浏览器内存和页面渲染限制。几千以内的阶乘都能算,数字会非常长。日常学习和概率计算一般远用不到这么大的 n。