階乘

階乘

階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760-1826)於1808年發明的運算符號,階乘同時也是數學裡的一種術語,指階乘指從1乘以2乘以3乘以4一直乘到所要求的數n。任何大於1的自然數n階乘表示方法:n!=1×2×3×……×n或 n!=n×(n-1)!。通常我們所說的階乘是定義在自然數範圍里的(大多科學計算器只能計算0~69的階乘)。但是,有時候我們會將Gamma函式定義為非整數的階乘,因為當x是正整數n的時候,Gamma函式的值是n-1的階乘。

基本信息

階乘

階乘階乘
階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)於1808年發明的運算符號
階乘,也是數學里的一種術語
階乘指從1乘以2乘以3乘以4一直乘到所要求的數。

計算方法

正整數階乘指從1乘以2乘以3乘以4一直乘到所要求的數。
例如所要求的數是4,則階乘式是1×2×3×4,得到的是24,24就是4的階乘。例如所要求的數是6,則階乘式是1×2×3×……×6,得到的積是720,720就是6的階乘。例如所要求的數是n,則階乘式是1×2×3×……×n,設得到的積是x,x就是n的階乘。

表示方法

任何大於1的自然數n階乘表示方法:
n!=1×2×3×……×n

n!=n×(n-1)!

20以內數的階乘

以下列出0至20的階乘:
0!=1,注意(0的階乘是存在的)
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
另外,數學家定義,0!=1,所以0!=1!
而當n≥5時,n!的個位數字都是0.

舉例

所要求的數是4,則階乘式是1×2×3×4,得到的積是24,24就是4的階乘。 例如所要求的數是6,則階乘式是1×2×3×……×6,得到的積是720,720就是6的階乘。例如所要求的數是n,則階乘式是1×2×3×……×n,設得到的積是x,x就是n的階乘
在表達階乘時,就使用“!”來表示。如h階乘,就表示為h!
階乘一般很難計算,因為積都很大。
以下列出1至10的階乘。
1!=1,
2!=2,
3!=6,
4!=24,
5!=120,
6!=720,
7!=5040,
8!=40320
9!=362880
10!=3628800
另外,數學家定義,0!=1,所以0!=1!
通常我們所說的階乘是定義在自然數範圍里的,小數沒有階乘,像0.5!,0.65!,0.777!都是錯誤的。
但是,有時候我們會將Gamma函式定義為非整數的階乘,因為當x是正整數n的時候,Gamma函式的值是n-1的階乘。
伽瑪函式(Gamma Function)
Γ(x)=∫e^(-t)*t^(x-1)dt (積分下限是零上限是+∞)(x<>0,-1,-2,-3,……)
運用積分的知識,我們可以證明Γ(x)=(x-1) * Γ(x-1)
所以,當x是整數n時,Γ(n) = (n-1)(n-2)……=(n-1)!
這樣Gamma 函式實際上就把階乘的延拓。

雙階乘

階乘用“m!!”表示。
當m是自然數時,表示不超過m且與m有相同奇偶性的所有正整數的乘積。如:
(2n-1)!!=1×3×5×···×(2n-1)
2n!!=2×4×8×···×2n
當m是負奇數時,表示絕對值小於它的絕對值的所有負奇數的絕對值積的倒數。
當m是負偶數時,m!!不存在.

計算機階乘

Python語言中
在Python中,可以很方便的用更為簡潔方式實現階乘的計算
deffactorial(n)
ifn==1
return1
else
returnfactorial(n-1)*n
C語言中
在C語言中,使用循環語句可以很方便的求出階乘的值,下面介紹一個很簡單的階乘例子。(因為網上多數是比較麻煩的方法)
¤【計算出“1!+2!+3!+……+10!”的值是多少?】
#include<stdio.h>
intmain(void)
{
longx,j=1,sum=0;
for(x=1;x<=10;++x)
{
j*=x;
sum+=j;
}
printf("1!+2!+...+10!=%ld\n",sum);
return0;
}
/*結果:4037913*/
Pascal中programtest;
varn:longint;
functionjc(n:longint):qword;
beginifn=0thenjc:=1elsejc:=n*jc(n-1)end;
beginreadln(n);writeln(jc(n))end.
C++中
#include<iostream>usingnamespacestd;
longlongf(intn){
longlonge=1;
if(n>0)
e=n*f(n-1);
cout<<n<<"!="<<e<<endl;
returne;
}
intmain(){
intm=20;
f(m);
return0;
}
以上使用C++11標準
JAVA中publicclassMain{finalstaticintMAX=20;//可以替換MAX的值。
publicstaticvoidmain(String[]args)
{
inti=1;
longresult=1;
long[]n=newlong[MAX];
do{
result*=(i+1);
out.println(i+"!="+result);
n[i]=result;
i++;
}while(i<MAX);
n[0]=1;//階乘end
}
提供另外一種方法:
publicstaticfinalintfac(intn)
{return(n==0)?1:n*fac(n-1);
}php

<?phpfunctionjc($n){
if($n>1){
return$n*jc($n-1);
}else{
return1;
}}?>Python階乘
#!/usr/bin/envpythonimportsysdefwarn():
print("Usage:%snumber"%sys.argv[0])
print("Pleaseinputmaxnumberthatyouwanttodofactorialon.")
deffactorial(value):
ifvalue==0:
return1elifvalue==-1:
return(((-1)*(-1))-(-1)*(-1))
else:
I=1forJinrange(1,value);
I*=(J+1)
returnIif__name__=="__main__":
iflen(sys.argv)==1:
warn()eliflen(sys.argv)>2:
warn()elifint(sys.argv[1])<-1:
print("Pleasegiveaninteger.")
else:
print("%s!=%s"%(sys.argv[1],factorial(int(sys.argv[1]))))
JavaScript階乘
functionfactorial(num){
if(num<=1)
return1;
else
returnnum*arguments.callee(num-1);
}
高精度求階乘
1C語言
#include<stdio.h>
#defineN5000//modifyittoholdlargernumber
intmain(void){
intn,i,j,s,up,f[N]={0};
scanf("%d",&n);
for(i=2,f[0]=1;i<=n;i++)
{
for(j=up=0;j<N;j++)
{
s=f[j]*i+up;
f[j]=s%10;
up=s/10;
}
}
for(i=N-1;f[i]==0;i--);
for(;i>=0;i--)
printf("%d",f[i]);
printf("\n");
return0;
}
2Pascal語言
vari,j,n,w:longint;a:array[1..1000]ofinteger;procedurefact(k:longint);varx,i:longint;beginx:=0;fori:=1towdobegina[i]:=a[i]*k+x;x:=a[i]div10;a[i]:=a[i]mod10;end;whilex>0DObeginw:=w+1;a[w]:=xmod10;x:=xdiv10;end;end;beginassign(input,'n,iin');reset(input);assign(output,'n,iout');rewrite(output);a[1]:=1;w:=1;readln(n);fori:=1tondofact(i);forj:=wdownto1dowrite(a[j]);writeln;close(input);close(output);end.

定義範圍

通常我們所說的階乘是定義在自然數範圍里的(大多科學計算器只能計算0~69的階乘),小數科學計算器沒有階乘功能,如0.5!,0.65!,0.777!都是錯誤的。但是,有時候我們會將Gamma函式定義為非整數的階乘,因為當x是正整數n的時候,Gamma函式的值是n-1的階乘。

相關詞條

相關搜尋

熱門詞條

聯絡我們