#include "stdafx.h" //求阶乘位40位或者以上的最小的数 #include <stdio.h> #include <stdlib.h> #define N 100 int a[N]; int main() { int now_digit = 0; // 定义现在的位数 int i ,j, k; i = 1; a[0] = 1; while(1) { int x1; printf("%2d != ",i); for(x1 = now_digit; x1 >= 0; x1--) printf("%d",a[x1]); printf("/n"); if(now_digit >= 40) break; i++; for(j = 0; j <= now_digit; j++) a[j] *= i; k = 0; while(k < now_digit) { if(a[k] >= 10) { a[k+1] += a[k]/10; a[k] %= 10; } k++; } while(a[k] >= 10) { a[k+1] += a[k]/10; a[k] %= 10; k++; } now_digit = k; } printf("/nthe ans is %d/n", i); return 0; }