6000甚至10000,都可以,但大于6000,就开始滚屏了,这时,你可以加入输出重定语句: freopen("out.txt","w",stdout); #include<stdio.h> #include<stdlib.h> #include<math.h> int main(){ int i,j,*f,tmp,c=0; long int n,bits; const double PI=2*asin(1.0),E=exp(1.0); scanf("%ld",&n); bits=(long)ceil(n*(log10(n)-log10(E))+log10(2*PI*n)/2); printf("there are %ld digits/n%ld!=",bits,n); f=(int*)calloc(bits,sizeof(int)); f[0]=1; for(i=2;i<=n;i++){ for(j=0;j<bits;j++){ tmp=f[j]*i+c; c=tmp/10; f[j]=tmp%10; } } for(i=bits-1;i>=0;i--) printf("%d",f[i]); printf("/n"); return 0; }