求一个c语言的大数阶乘程序源代码。

Python016

求一个c语言的大数阶乘程序源代码。,第1张

希望对你有帮助——

//#include "stdafx.h"//VC++6.0要用这一行

#include "stdio.h"

#include "math.h"

#include "stdlib.h"

char *FactorialLN(int n){

int i,j,k,tmp,len

char *pa,*pb,*px,s[11]="",*ps9=s+9

double dec=0

for(n++,i=2i<ndec+=log10(i++))

len=(int)dec+2

if(!(pa=(char *)malloc(len)) || !(pb=(char *)malloc(len))){

printf("Application memory failure...")

exit(0)

}

for(i=0i<len*(pa+i)=*(pb+i++)=0)

for(i-=2,j=--nj*(pb+i--)=j%10,j/=10)

len--

i++

while((k=--n)>1){

for(px=ps9k*px--=k%10,k/=10)

for(k=0,tmp=ps9-pxk<tmpk++){

for(px=ps9,j=len-1j>=i*(pa+j-k)+=*(pb+j--) * *(px-k))

for(px=pa-k,j=len-1-kj>=i-kj--){

if(*(px+j)>9){

*(px+j-1) += *(px+j)/10

*(px+j) %= 10

}

}

if(i) i--

}

px=pa

pa=pb

pb=px

for(k=0k<len*(pa+k++)=0)

}

free(pa)

for(i=0i<len*(pb+i++)+='0')

return pb

}

void main(void){

int n

char *p

printf("Please enter an integer.\nn=")

scanf("%d",&n)

printf("\n%d! = %s.",n,p=FactorialLN(n))

free(p)

printf("\n")

}

太麻烦了吧?如果仅仅为了求N!-M!, N!+M!,调用一个阶乘函数,不就行了?

下面的是求N!-M!, N!+M!的代码:

#include<stdio.h>

int jie(int n)

{

int x

for(x=1n>0n=n-1)

x*=n

return(x)

}

main()

{

int n,m,q1,q2

printf("please input n:\n")

scanf("%d",&n)

printf("please input m:\n")

scanf("%d",&m)

q1=jie(n)-jie(m)

q2=jie(n)+jie(m)

printf("%d!-%d!=%d\n%d!+%d!=%d\n",n,m,q1,n,m,q2)

}

n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。

参考代码:

#include "stdio.h"

int main() {

int n,i,s=1

scanf("%d",&n)

for(i=1i<=ni++)//for循环求累积

s=s*i

printf("%d\n",s)

return 0

}

/*

运行结果:(例如求5的阶乘)

5

120

*/

扩展资料: 

return用法:

return返回一个数值的意思就是把return<表达式>后面表达式的值返回给调用他的函数。举个例子:

int sum(int i,int j)

{

return i+j

printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了")

}

main()

{

int a=10,b=11,c

c=sum(a,b)

printf("%d",c)

}