现在的位置: 首页 > 综合 > 正文

C语言 求一个大数的阶乘

2013年01月21日 ⁄ 综合 ⁄ 共 305字 ⁄ 字号 评论关闭

C语言 求一个大数的阶乘

void BigFactorial(int m)
{
	static int a[50000]={0,1};//第一位不用
	int i,j,carry,tmp,lenth=1;//carry表示进位
	
	for (i=2;i<=m;i++)
	{
		carry=0;
		for (j=1;j<=lenth;j++)
		{
			//乘法转化为加法和进位
			tmp=a[j]*i+carry;
			a[j]=tmp%10;
			carry=tmp/10;

			//如果有进位,则向前扩展一位
			if (j==lenth&&carry!=0)
				lenth++;
		}
	}
	for(int k=lenth;k>=1;k--)
		printf("%d",a[k]);
}

下面计算1000的阶乘:

抱歉!评论已关闭.