阶乘计算器
输入非负整数 n 即可计算阶乘 n! = n×(n−1)×…×1,给出精确大数结果、位数、科学计数法、末尾零个数与连乘展开式;用大整数精确计算,20! 以上也不丢精度,0! 按约定为 1。
支持 0 到 10000 的整数;0! = 1。
5! = 5 × 4 × … × 1,即把 1 到 5 的所有正整数连乘,结果共 3 位、末尾有 1 个 0。
怎么用
- 输入 n:在输入框填要计算阶乘的非负整数 n(如 5、10、100)。阶乘只对 0 和正整数有定义,不能输入小数或负数。
- 读精确结果:工具立即给出 n! 的精确值:n! = n × (n−1) × … × 2 × 1。结果用大整数(BigInt)精确计算,不会像普通计算器那样在 20! 之后丢精度。
- 看位数与科学计数法:阶乘增长极快,结果常是大数。工具同时给出结果的总位数与科学计数法(如 100! ≈ 9.3326×10¹⁵⁷,按 5 位有效数字四舍五入显示,仅用于估量级);需要每一位都准确时,可点「展开完整精确值」查看全部数字。
- 看末尾零与展开式:工具给出 n! 末尾连续 0 的个数(等于因子 5 的个数);n 较小时还展示 n×(n−1)×…×1 的连乘展开式,便于手算核对。
核心要点
阶乘计算器按 n! = 1 × 2 × 3 × … × n 的定义计算 n 的阶乘, 用大整数精确运算。
- 定义:
n! = n × (n−1) × … × 1,且n! = n × (n−1)!。 - 0! = 1:空乘积约定,使排列组合公式自洽。
- 增长极快:
5! = 120、10! = 3628800、20! ≈ 2.43×10¹⁸。 - 末尾零:由因子 5 的个数决定,
25!有 6 个、100!末尾有 24 个 0。 - 精确大数:BigInt 计算,20! 以上每一位都正确。
原理与公式
阶乘 n!(读作「n 的阶乘」)定义为从 1 到 n 的所有正整数之积:n! = 1 × 2 × 3 × … × n,其中 n 是非负整数。
递推定义与 0!
阶乘可递推定义:0! = 1,n! = n × (n−1)!。由此 1! = 1、2! = 2、3! = 6、4! = 24、5! = 120……。把 0! = 1 规定为 「空乘积」(无因子相乘取 1),既符合数学惯例,也保证递推式与排列组合公式在边界处成立。
增长速度
阶乘比指数增长还快:10! = 3628800、13! = 6227020800(已超 32 位整数)、20! = 2432902008176640000(已超 64 位整数)、100! 有 158 位。正因如此,普通浮点计算器在 20! 之后就只能给近似值; 本工具用大整数(BigInt)逐位相乘,保证精确。
末尾零的个数
n! 末尾连续 0 的个数等于其因子 5 的个数:Z(n) = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + …。例如 Z(25) = 5 + 1 = 6、Z(100) = 20 + 4 = 24。这是因为 末尾每多一个 0 就多一个因子 10 = 2×5,而阶乘中因子 2 总比 5 多,故由 5 的个数决定。
推广:伽马函数
阶乘只对非负整数定义;推广到实数/复数要用伽马函数 Γ(x),满足 n! = Γ(n+1),例如 (1/2)! = Γ(3/2) = √π/2 ≈ 0.8862。本工具仅计算非负整数阶乘。
精度:所有阶乘用大整数(BigInt)精确相乘,结果每一位都正确; 位数过多时先给科学计数法,可展开查看完整数字。计算在浏览器本地完成。
常见问题
- 阶乘 n! 是什么意思?怎么算?
- n 的阶乘记作 n!,表示从 1 连乘到 n 的所有正整数之积:n! = 1 × 2 × 3 × … × n。例如 5! = 1×2×3×4×5 = 120,3! = 6,4! = 24。它也满足递推关系 n! = n × (n−1)!,即每增加 1,就再乘以这个新数。阶乘只对非负整数有定义。本工具输入 n 即可得到精确的 n!、位数、科学计数法与末尾零个数。
- 0 的阶乘为什么等于 1?
- 0! = 1 是数学上的规定,理由有两个:一是「空乘积」约定——没有任何因子相乘时取乘法单位元 1(就像空求和等于 0);二是为了让递推式 n! = n × (n−1)! 在 n=1 时成立:1! = 1 × 0!,要使 1! = 1 就必须 0! = 1。这样排列组合公式 C(n,k)=n!/(k!(n−k)!) 在 k=0 或 k=n 时也能给出正确的 1。所以 0! = 1 不是「算」出来的,而是为自洽而定义的。
- 为什么普通计算器算大阶乘会不准?这里的结果准吗?
- 阶乘增长极快:13! 就超过 32 位整数,21! 超过 64 位整数,而手机/Excel 等用 64 位浮点数(约 15–17 位有效数字),从 21! 起就只能给出带误差的近似值(末尾几位是错的)。本工具用大整数(BigInt)逐位精确相乘,结果的每一位都正确,例如 25! = 15511210043330985984000000。位数过多时会先显示科学计数法,可点击展开完整数字。
- 阶乘末尾有多少个 0?怎么求?
- n! 末尾 0 的个数等于它含有因子 10 的个数,而 10 = 2×5、阶乘里因子 2 远多于 5,所以末尾 0 的个数 = 因子 5 的个数 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + …(一直加到除数超过 n)。例如 25! 有 ⌊25/5⌋+⌊25/25⌋ = 5+1 = 6 个末尾 0;100! 有 20+4 = 24 个。本工具会直接给出这个个数,这是数学竞赛与编程题里的常见考点。
- 负数或小数能算阶乘吗?
- 在初等定义下不能:阶乘只对非负整数(0、1、2、3…)有定义。如果想把阶乘推广到小数甚至负数,需要用「伽马函数」Γ(x),它满足 n! = Γ(n+1),例如 0.5! = Γ(1.5) = √π/2 ≈ 0.8862;但伽马函数在 0 和负整数处发散(无定义)。本工具只计算非负整数的阶乘;输入负数或小数会提示无效。
- 阶乘和排列组合有什么关系?
- 阶乘是排列组合的基础。n 个不同元素全排列的方式数就是 n!;从 n 个里有序取 k 个的排列数 A(n,k) = n!/(n−k)!;无序取 k 个的组合数 C(n,k) = n!/(k!(n−k)!)。所以算概率、排列、二项式系数时几乎都要用到阶乘。需要直接算排列数/组合数时可配合排列组合相关工具,本工具负责给出精确的 n! 数值。
- 阶乘最大能算到多少?为什么有上限?
- 本工具支持 0 到 10000 的阶乘。上限是出于性能与可读性考虑:阶乘结果位数随 n 飞快增长,10000! 已有约 35660 位数字;再大的数计算和显示都会变慢、也很难有实际用途。常见场景(数学作业、竞赛、概率统计、编程验算)几乎都在这个范围内。需要量级估计时,科学计数法已足够说明大小。
- 有没有近似公式可以估算大阶乘?
- 有,常用斯特林公式(Stirling's approximation):n! ≈ √(2πn) · (n/e)ⁿ,它能很好地估计大阶乘的量级,n 越大越精确。它常用于推导算法复杂度、概率论与统计物理中的估算。不过斯特林公式只是近似,要精确数值仍需逐位相乘——这正是本工具所做的;你可以用本工具的精确值去验证斯特林公式的估计有多接近。