#include #include int main(void) { int i, n; int fact=1; printf("n の階乗を計算します。自然数 n を入力してください:"); scanf("%d", &n); while ( n < 0 ) { printf("n は正でなければ行けません。もう一度入力してください:"); scanf("%d", &n); } for (i=1; i<=n; i++) { if ( fact > (INT_MAX/n) ) { printf("%d の階乗は %d 回目の繰り返しで桁溢れを起こして求められません\n", n, i); return 0; } fact *= i; printf("i=%d, fact=%d\n",i,fact); } printf("%d の階乗は %20d です\n", n, fact); return 0; }