您的位置:首页 > 其它

数学问题--大数的阶乘

2013-09-01 21:56 281 查看
#include <stdio.h>
#include <math.h>

int factorial(int n)    //求阶乘,返回值 是结果值的位数
{
long a[10000];
int i,j,c,m=0;
a[0]=1;
for(i=1;i<=n;i++)
{
c=0;
for(j=0;j<=m;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
}
if(c>0) {m++;a[m]=c;}
}

printf("%ld",a[m]);
for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);

int w=m*4+(int)log10(a[m])+1;
return w;
}

void main()
{
factorial(20);
}


   

语法:int result=factorial(int n);
参数:
n:
n 的阶乘
返回值:
阶乘结果的位数
 

    这里的方法很简洁,如果你想用字符串的形式,也可以参考我之前一篇文章http://blog.csdn.net/luoluoxiaocainiao/article/details/9879839   里面的Add和Mul函数可以实现阶乘.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 大数阶乘