int factorial(int n)
{
	long a[10000];
	int i,j,c,m=0; 
	a[0]=1; 
	for(i=1;i<=n;i++)
	{ 
		c=0; 
		for(j=0;j<=m;j++)
		{
			a[j]=a[j]*i+c;
			c=a[j]/10000;
			a[j]=a[j]%10000;
		}
		printf("\n");
		if(c>0) 
		{
			m++;
			a[m]=c;
		}
	}
	printf("\n%ld",a[m]);
	for(i=m-1;i>=0;i--)
		printf("%4.4ld",a[i]);
return w;
} 原文地址:http://blog.csdn.net/yejinwei1220/article/details/45877037