- #include<stdio.h>
- char * jiecheng(int n)
- {
- int i,j,x=1,flag;
- int fac[10000]={0},add[10000]={0};
- char a[10000]={'0'};
- if(n<=3)
- {
- for(i=1;i<=n;i++)
- x*=i;
- a[0]=x+'0';
- return a;
- }
- else
- {
- fac[0]=4;fac[1]=2;
- flag=1;
- for(i=5;i<=n;i++)
- {
- add[0]=fac[0]*i/10;
- for(j=1;j<=flag;j++)
- add[j]=(add[j-1]+fac[j]*i)/10;
- if(add[flag]!=0)flag++;
- fac[0]=fac[0]*i%10;
- for(j=1;j<=flag;j++)
- fac[j]=(fac[j]*i+add[j-1])%10;
- }
- for(i=flag;i>=0;i--)
- a[flag-i]=fac[i]+'0';
- return a;
- }
- }
- void main()
- {
- int n;
- char *p;
- printf("请输入要算阶乘的数: ");
- scanf("%d",&n);
- printf("%d!=",n);
- p=jiecheng(n);
- printf("%s",p);
- }
最近没事做了个能实现任意数阶乘的程序,感觉到挺有意思的,共同分享一下。