#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函數可以實現階乘.