这题数字到后面很大,不能用普通的方法。用数组进行大整数的乘法。手工算法。
int mutiply(int N);
void Print_Factorial(int N)
{
double sum=1;
int s;
if(N<0)
{
printf("Invalid input\n");
return;
}
if(N==0)
{
printf("1\n");
return;
}
if(N>0)
{
mutiply(N);
return;
}
}
int mutiply(int N)
{
int s;
int a[3000]={0};
a[0]=1;
int c;//进位用
for(int i=2;i<=N;i++)
{
c=0;
for(int j=0;j<3000;j++)
{
s=i*a[j]+c;
a[j]=s%10;
c=s/10;
}
}
int k;
for(int i=2999;i>=0;i--)
{
if(a[i])
{
k=i;
break;
}
}
for(int i=k;i>=0;i--)
printf("%d",a[i]);
}