C语言 求一个大数的阶乘

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的阶乘:



你可能感兴趣的:(算法/数据结构,C/C++,C语言)