阶乘(Factorial)
阶乘是数学中一个基础运算,用符号「n!」表示,定义为从 1 到 n 所有正整数的乘积,即 n! = n × (n-1) × (n-2) × ... × 3 × 2 × 1。特别地,0! = 1 是数学约定。阶乘在组合数学、概率论、数论等领域有广泛应用,是计算排列数和组合数的基础。在本工具中,阶乘是核心计算对象,用户输入非负整数 n,工具返回 n! 的精确结果。
排列(Permutation)
排列是指从 n 个不同元素中取出 k 个元素,并按照一定顺序排成一列的方法数,记作 P(n,k) 或 nPk。排列数的计算公式为 P(n,k) = n! / (n-k)!,其中阶乘是核心运算。当 k = n 时,P(n,n) = n!,即全排列。排列概念是理解阶乘在实际问题中应用的重要桥梁,例如安排座位顺序、密码组合等场景都需要用到排列计算。
组合(Combination)
组合是指从 n 个不同元素中取出 k 个元素组成一组(不考虑顺序)的方法数,记作 C(n,k) 或 nCk。组合数的计算公式为 C(n,k) = n! / (k! × (n-k)!),同样以阶乘为核心运算。与排列不同,组合不关心元素的排列顺序。组合在概率论、统计学和日常生活中都有广泛应用,例如从班级中选出委员会成员、计算彩票中奖概率等。
BigInt
BigInt 是 JavaScript 中用于表示任意精度整数的内置数据类型,可以存储超出 Number 类型安全整数范围(±2⁵³)的整数。在阶乘计算中,BigInt 的重要性不言而喻——100! 已经有 158 位数字,远远超过了普通浮点数的表示能力。本工具使用 BigInt 进行所有乘法运算,确保从 0! 到 10000! 的每一个结果都是精确无误的,不会出现溢出或精度丢失。BigInt 是现代浏览器的原生特性,无需额外库支持。
斯特林公式(Stirling's Approximation)
斯特林公式是阶乘的渐近近似公式,表述为 n! ≈ √(2πn) × (n/e)ⁿ,其中 e 是自然常数(约 2.71828)。当 n 较大时,斯特林公式的近似精度非常高,相对误差约为 1/(12n)。这个公式在数学分析、概率论和统计物理中有重要应用,因为它将阶乘的离散运算转化为连续函数的形式,便于进行理论分析。在本工具中,科学计数法近似值的计算也参考了斯特林公式的思路。
勒让德公式(Legendre's Formula)
勒让德公式用于计算 n! 的质因数分解中某个质数 p 的指数,公式为:v_p(n!) = ⌊n/p⌋ + ⌊n/p²⌋ + ⌊n/p³⌋ + ...,其中 ⌊x⌋ 表示向下取整。本工具利用勒让德公式计算 n! 末尾零的个数(即因子 10 的个数,等于因子 2 和因子 5 的指数中较小的一个)。例如,100! 末尾有 ⌊100/5⌋ + ⌊100/25⌋ = 20 + 4 = 24 个零。这个公式是数论中的经典结果。
双阶乘(Double Factorial)
双阶乘用符号「n!!」表示,是隔位相乘的运算。当 n 为奇数时,n!! = n × (n-2) × (n-4) × ... × 1;当 n 为偶数时,n!! = n × (n-2) × (n-4) × ... × 2。例如 7!! = 7×5×3×1 = 105,8!! = 8×6×4×2 = 384。双阶乘在球坐标系中的体积积分、沃利斯公式以及某些特殊函数的展开中有重要应用。需要注意的是,本工具目前仅支持标准阶乘 n! 的计算,不支持双阶乘。
伽马函数(Gamma Function)
伽马函数 Γ(z) 是阶乘在复数域上的推广,定义为 Γ(z) = ∫₀^∞ t^(z-1) × e^(-t) dt。对于正整数 n,有 Γ(n+1) = n!。伽马函数将阶乘从离散的正整数定义域扩展到了整个复平面(除了非正整数点),是数学分析和特殊函数理论中的重要工具。伽马函数与阶乘的关系解释了为什么 0! = 1:因为 Γ(1) = ∫₀^∞ e^(-t) dt = 1,所以 0! = Γ(1) = 1。
递推关系(Recurrence Relation)
递推关系是用前一项或前几项的值来定义数列的方程。阶乘满足最基本的递推关系:n! = n × (n-1)!,初始条件为 0! = 1。这意味着我们可以通过不断乘以递减的整数来计算阶乘,也可以反过来用 n! 除以 n 得到 (n-1)!。递推关系是计算机科学中动态规划和递归算法的理论基础,许多高效的阶乘计算算法(如分治乘法)都利用了阶乘的递推性质。
空乘积(Empty Product)
空乘积是指没有因子参与的乘积,按照数学约定,空乘积的值为 1。这个约定与空和(值为 0)类似,是数学中处理边界情况的重要概念。在阶乘的定义中,0! = 1 正是基于空乘积的约定——当 n=0 时,从 1 到 0 没有正整数参与乘法,因此结果为 1。空乘积约定在组合数学中至关重要,因为它确保了排列数公式 P(n,n) = n!/0! = n! 的自洽性,也使得二项式定理中的边界项能够正确计算。
科学计数法(Scientific Notation)
科学计数法是一种用 a × 10^b 的形式表示极大或极小数字的方法,其中 1 ≤ |a| < 10,b 为整数。在阶乘计算中,科学计数法特别有用——10000! 的结果有 35660 位数字,直接阅读几乎不可能,而用科学计数法表示为 ≈ 2.85 × 10^35659,可以直观了解其数量级。本工具在显示完整精确结果的同时,也提供科学计数法近似值,帮助用户在精确性和可读性之间取得平衡。科学计数法在物理学、天文学和工程学中被广泛使用。
末尾零(Trailing Zeros)
末尾零是指数字从右端开始连续出现的零的个数。在阶乘结果中,末尾零的个数等于 n! 中因子 10 的个数,而因子 10 = 2 × 5。由于在 n! 的质因数分解中,因子 2 的个数总是多于因子 5 的个数,因此末尾零的个数由因子 5 的个数决定,可以通过勒让德公式精确计算。末尾零在密码学、数值分析和组合优化中有实际应用,例如计算 n! 末尾零的个数是一道经典的编程面试题。
UD5工具箱