阶乘(factorial)是基斯顿·卡曼(Christian Kramp,1760~1826)于1808年发明的运算符号 [1].正整数的阶乘定义为所有小于及等于该数的正整数的积,记为n!,例如5的阶乘表示为5!,其值为120:5!=1×2×3×4×5=120.
特别地,定义1!=1,0!=1.
阶乘运算满足递推公式n!=n·(n-1)!,除了自然数之外,阶乘亦可定义于整个实数(负整数除外),此时一般称其为伽玛函数.
阶乘被应用在许多数学领域中,最常应用在组合数学、代数学和数学分析中.在组合数学中,阶乘代表的意义为几个相异对象任意排列的数量,例如5!=120代表了5个相异对象共有120种排列法.在正整数的情形下,n的阶乘即组合数学中n的排列数.
- 中文名
- 阶乘
- 外文名
- factorial
- 所属学科
- 数学
- 提出者
- 基斯顿卡曼(Christian Kramp)
- 发明时间
- 1808年
早在12世纪,印度学者就已有使用阶乘的概念来计算排列数的纪录 [2].今天使用的符号是由法国数学家基斯顿·卡曼于1808年引入的. [1]
用连乘积符号可以表示为:
从上述公式中,可以推导出递推关系式:
例:
.
为了将递推关系式扩展到
,需要定义0的阶乘:0!=1 [3]
因此由递推公式可以得到:
有几种独立的理由认为这个定义是和谐的:
1.当
时,
定义为“没有任何数字相乘的结果”,因此这是一个更广泛的定义“空积(emptyproduct)”的例子;
2.在组合数学中,对0个物品只有一种排列方式,即0个物品的全排列
[1];
3,同样,在空集合中选择0个元素组成不同组的方法只有一种,即
;
注:
与
都表示从
个不同元素中取出
个元素的组合数:
[3-4]
4.考虑r函数在
点处的情况,
,r函数需要满足该值才能在该点连续. [5]
阶乘函数的性质众多,这里只能简单列举几个常见的性质.
注:这里的约等号事实上并不严谨,对上述命题的严谨证明如下:
由关系式
但是,
因此当
时,有
由于当
时有
,公式
的相对误差当
时趋于零 [5].
另一个版本是使用奇数级指数函数来近似. [5]
整数的阶乘定义意味着
可分为小于等于
的素因子的乘积,
的素因子
的指数由勒让德公式(Legendre'sformula)给出:
注:设
为任意实数,则
表示不超过x的最大整数.
由此可推出
的标准分解式为
例1:求 100!中 3 的指数.
解:
例2: 
是勒让德公式的一个特殊情况,
给出了
这个数字末尾的0的数量(即正好可以被10的
次幂整除).事实上,由勒让德公式知
的指数总是大于
的指数,这样每个因子5才能与一个因子2配对.
对非负整数
和
,满足
事实上,只需要考虑
是整数即可. [7]
若
是
次本原多项式,定义
.那么
整除
. [7]
有无限多的阶乘等于其他阶乘的乘积,如果$n$ 本身就是阶乘的乘积,那么
自然也是阶乘的乘积(这是平凡的).目前已知的不平凡的例子只有
,
,
[8].
当
很大时,可用斯特林公式估计:
更精确的估计是使用
等方法。
#include<stdio.h>
int main(){
int n,x;
for(n=x=1;x<=10;++n){
x*=n;
}
printf("%d\t%d\n",n,x);
}
n | n! |
0 | 1 |
1 | 1 |
2 | 2 |
3 | 6 |
4 | 24 |
5 | 120 |
6 | 720 |
7 | 5040 |
8 | 40320 |
9 | 362880 |
10 | 3628800 |
11 | 39916800 |
12 | 479001600 |
13 | 6227020800 |
14 | 87178291200 |
15 | 1307674368000 |
16 | 20922789888000 |
17 | 355687428096000 |
18 | 6402373705728000 |
19 | 121645100408832000 |
20 | 2432902008176640000 |
25 | 1.551121004×1025 |
50 | 3.041409320×1064 |
70 | 1.197857167×10100 |
100 | 9.332621544×10157 |
450 | 1.733368733×101000 |
1000 | 4.023872601×102567 |
3249 | 6.412337688×1010000 |
10000 | 2.846259681×1035659 |
25206 | 1.205703438×10100000 |
100000 | 2.824229408×10456573 |
205023 | 2.503898932×101000004 |
1000000 | 8.263931688×105565708 |
10100 |
有无限多的方法可以将阶乘延拓成一个连续函数,最广泛使用的一种形式是Γ函数(gamma function)。
除了非负整数之外,还可以为非整数值定义阶乘函数,但这需要使用更高级的数值分析方法.
称特殊函数
为第二类欧拉积分.也称为欧拉Γ函数(伽玛函数). Γ函数有如下性质:
a.定义域
由于Γ函数仅当
时在下限零处收敛,而在上限无穷远处,由于快速递减因子
,对任何
都收敛.
于是Γ函数定义域为
.
b.光滑性和导数形式
Γ函数是无限次可微的,且
c.递推公式
Γ函数的递推公式如下:
因为
.我们推出,当
时,
d.欧拉-高斯公式
通常称下面的等式
为欧拉-高斯公式.
e.余元公式
当时,称Γ函数的自变量α与1-α是互余的,因此等式
叫做Γ函数的余元公式.
f.Beta函数与gamma函数的联系
例1:
[5]
注意到
注:
名叫欧拉-泊松积分,其值为
[5]另一种方法是通过余元公式:
带入
直接得到结果. [5]
Γ函数也可以解析延拓到复数的半平面
上(
在半平面
上是一个全纯函数),其形式仍为
.
事实上,Γ函数在整个复平面
上定义了一个亚纯函数,其所有的奇点出现在所有的非正整数
上,Γ函数在
处的留数是
.
Γ函数在ℂ上仍然满足5.1部分的性质全部性质,此处不再赘述 [9].
自然数的双阶乘用表示.双阶乘表示不超过n且与n有相同奇偶性的所有正整数的乘积.若n是自然数,则
,
。
例:
,
,
,约定
[10].
递进阶乘:
递降阶乘:
[11]
Hyperfactorial(有时译作过阶乘)定义为
[12].
超阶乘(superfactorial)有两种定义,一个是Sloane和Plouffe的定义.
自然数n的超阶乘的定义为
[13].
另一个定义是柯利弗德·皮寇弗(CliffordA. Pickover)在他的书Keys to Infinity中提出的
[14].
素数阶乘(primorial)是所有小于或等于该数且大于或等于2的素数的积,自然数n的素数阶乘,写作n#.
其中
是素数计数函数,表示小于或等于某个实数
的素数的个数. [15]
阶幂(Exponential factorial)也称叠幂或者重幂. 它的定义是将自然数1至n的数由大到小作幂指数重叠排列:
.其中
且
,前几项重幂数为1,2,9,262144,...
交替阶乘(Subfactorial)的定义为对n个物体进行置换(排列),其中没有物体出现在其自然位置的排列的个数(即derangements),写作
.
[16]