(有兴趣者请帮)求任意数的阶乘
各位:下面这道程序我打算用来求1000000的阶乘的,但是现在调试到350左右的阶乘时就报错了。为什么?求帮忙调试一下,谢谢!
/*求百万以内数的阶乘*/
#define N 350 //N为所求阶乘的数
#include<stdio.h>
void main()
{
long int i; //乘数,从2至N
int j; //数组下标
long int k; //进位数
int a[750]; //保存每次相乘的结果
k=0;
a[0]=1;
for(i=2;i<=N;i++)
{
j=0;
a[j]=a[j]*i+k;
k=a[j]/10;
a[j]%=10;
l1: if((k<=0)&&(a[j+1]<0))
{
continue;
}
else if((k>0)&&(a[j+1]<0))
{
j++;
a[j]=k;
k=a[j]/10;
a[j]%=10;
goto l1;
}
else if((k>=0)&&(a[j+1]>=0))
{
j++;
a[j]=a[j]*i+k;
k=a[j]/10;
a[j]%=10;
goto l1;
}
}
for(;j>=0;j--)
{
printf("%d",a[j]);
}
printf("\n\n\n");
}