求大数阶乘

#include <stdio.h>
#include <string.h>
long a[1000000],temp,i,num;
int main()
{
    int n;
	while(~scanf("%d",&n))
	{
        int digit=1;//每次得数的位数,temp为每次得数
	  num=0;//
	  memset(a,0,sizeof(a));
	  a[0]=1;//从1开始乘
	  for(i=2;i<=n;i++)
	  {
		for(int j=0;j<digit;j++)
		{
			temp=a[j]*i+num;//将每个数的每一位数都分别乘以i;
			a[j]=temp%10;//将一个数的每一位数利用数组进行储存
		    num=temp/10;
		}
		while(num)
		{
		  a[digit]=num%10;//继续储存
		  num/=10;
		  digit++;
		}
	  }
    for(int j=digit-1;j>=0;j--)//倒序输出
     printf("%d",a[j]);
   printf("\n");
}
return 0;
}

发布了35 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Honeycomb_1/article/details/79575719