//#include "stdafx.h"//VC++6.0需要這行。
#包含“stdio.h”
#包含“math.h”
#包含" stdlib.h "
char *FactorialLN(int n){
int i,j,k,tmp,len
char *pa,*pb,*px,s[11]= " ",* ps9 = s+9;
double dec = 0;
對於(n++,I = 2;我& ltn;dec+= log 10(i++));
len =(int)dec+2;
如果(!(pa=(char *)malloc(len)) ||!(pb=(char *)malloc(len))){
printf("應用程序內存故障...");
退出(0);
}
for(I = 0;我& ltlen*(pa+I)= *(p b+ i++)= 0);
for(i-=2,j =-n;j;*(pb+i - )=j%10,j/= 10);
len-;
i++;
while((k= - n)>1){
for(px = ps9;k;*px - =k%10,k/= 10);
for(k=0,tmp = ps9-px;k & lttmpk++){
for(px=ps9,j = len-1;j & gt= I;*(pa+j-k)+= *(p b+ j-)* *(px-k));
for(px=pa-k,j = len-1-k;j & gt= I-k;j - ){
if(*(px+j)& gt;9){
*(px+j-1)+= *(px+j)/10;
*(px+j)% = 10;
}
}
if(I)I-;
}
px = pa
pa = pb
pb = px
for(k = 0;k & ltlen*(pa+k++)= 0);
}
免費(pa);
for(I = 0;我& ltlen*(p b+ i++)+= ' 0 ');
返回Pb;
}
無效主(無效){
int n;
char * p;
printf("請輸入壹個整數。\ nn = ");
scanf("%d ",& ampn);
printf("\n%d!= %s ",n,p = factorial ln(n));
免費(p);
printf(" \ n ");
}