数学问题--大数的阶乘

来源:互联网 发布:cloudstack 网络 编辑:程序博客网 时间:2024/04/30 08:17
#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函数可以实现阶乘.

原创粉丝点击