阶乘

阶乘

运算符号,数学术语
阶乘(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的阶乘。

相关词条

相关搜索

其它词条