階乘

階乘

運算符号,數學術語
階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760-1826)于1808年發明的運算符号,階乘同時也是數學裡的一種術語[2],指階乘指從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 适用領域:應用數學 所屬學科:數學 英文名:factorial 發明人:基斯頓·卡曼

定義

從1到n的連續自然數相乘的積,叫做階乘,用符号n!表示。如5!=1×2×3×4×5。規定0!=1。

計算方法

正整數階乘指從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

int main()

{

int x,i,y,n; //輸入一個整數, 計數,遞減的因數,限定循環次數//

scanf("%d",&x);

n=x;

y=x;

for(i=1;i<=n-1;i++,y--)//由于x一上來就是輸入值,所以省了一次:n-1//

x*=(y-1);//也可另設置一個積answer=1;這樣for語句裡就是 i<=x; //

printf("%d",x);

return 0;

}

//while循環也可//

2.網友的想法。(感覺思路更好)

#include

int main()

{

int n,fact=1,i; //輸入一個整數,結果,循環計數//

scanf("%d",&n);

for(i=1;i<=n;i++)

fact*=i;

printf("fact=%dn",fact);

return 0;

}

它不是向定式思維一樣因數遞減然後乘以結果,他是用我們輸入的數限定循環次數,從1開始遞增累乘到我們輸入的數,妙哉!

(b)求階乘之和。

#include

int main()

{

int i,j,n;

long term, sum = 0;

printf("Input n:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

term=1;

for(j=1; j<=i; j++)

term*=j;

sum+=term;

}

printf("1!+2!+...+%d!=n",n,sum);

return 0;

}

原文鍊接:https://blog.csdn.net/LOG_IN_ME/article/details/78712977

以上使用C++ 11标準

JAVA中public class Main{ final static int MAX=20;//可以替換MAX的值。

public static void main(String [] args)

{ int i = 1;

long result=1;

long [] n = new long[MAX];

do { result *= (i+1);

out.println(i+"! = "+result);

n[i] = result;

i++;

} while (i

n[0] = 1; //階乘end

}

提供另外一種方法:

public static final int fac(int n)

{return (n == 0)? 1 : n * fac(n - 1);

}php

if($n>1){

return $n*jc($n-1);

}else{

return 1;

}}?>Python 階乘

#!/usr/bin/env pythonimport sysdef warn():

print("Usage:%s number" % sys.argv[0])

print("Please input max number that you want to do factorial on.")

def factorial(value):

if value == 0:

return 1 elif value == -1:

return (((-1)*(-1))-(-1)*(-1))

else:

I=1 for J in range(1,value);

I*=(J+1)

return Iif __name__ == "__main__":

if len(sys.argv) == 1:

warn() elif len(sys.argv) >2:

warn() elif int(sys.argv[1]) < -1:

print("Please give an integer.")

else:

print("%s!=%s " % (sys.argv[1],factorial(int(sys.argv[1]))))

JavaScript 階乘

function factorial(num){

if (num <= 1)

return 1;

else

return num * arguments.callee(num - 1); }

高精度求階乘

1 C語言

#include 

#define N 5000 // modify it to hold larger number

int main(void){

int n, 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");

return 0;

}

2 Pascal語言

vari,j,n,w : longint;a : array[1..1000] of integer;procedure fact(k : longint);var x,i : longint;begin x := 0; for i := 1 to w do begin a[i] := a[i]*k+x; x := a[i] div 10; a[i] := a[i] mod 10; end; while x>0 DO begin w := w+1; a[w] := x mod 10; x := x div 10; end;end;begin assign(input,'n,i in'); reset(input); assign(output,'n,i out'); rewrite(output); a[1] := 1; w := 1; readln(n); for i := 1 to n do fact(i); for j := w downto 1 do write(a[j]); writeln; close(input); close(output);end.

定義範圍

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

上一篇:角度

下一篇:立方米

相關詞條

相關搜索

其它詞條