请问有没有大数阶乘的C语言代码?

原问题:请问有没有大数阶乘的C语言代码?
分类:编程开发 > 最后更新时间:【2016-12-13 05:55:08】
问题补充:

山东临沂老乡

最佳答案

完整的程序:

#include <stdio.h>
#include <stdlib.h>

#define MAX 40000

int fac[MAX]= {1};
int add[MAX]= {0};

int top=1;

void calculate(int n);

void print();

int main()
{
int n=50;
calculate(n);
printf("%d!=",n);
print();
return 0;
}

//计算N的阶乘
void calculate(int n)
{
int i,j;

if (n<=0)
{
exit(1);
}

for (i=1; i<=n; i++)
{
int m=top;

for (j=0; j<m; j++)
{
int tmp=fac[j]*i;

if (j==0)
{
fac[0]=tmp%10;
add[0]=tmp/10;
}

else
{
fac[j]=(tmp+add[j-1])%10;
add[j]=(tmp+add[j-1])/10;
}

while (add[top-1]>0)
{
top++;
int tmp=fac[top-1];
fac[top-1]=(tmp+add[top-2])%10;
add[top-1]=(tmp+add[top-2])/10;
}
}
}
}

//打印输出结果
void print()
{
int i;
for(i=top-1; i>=0; i--)
printf("%d",fac[i]);
printf("\n");
}

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
3

分享到:

其他回答

暂无其它回答!

    推荐