/* * Program to compute factorial using loop. * * (Also checks for overflow.) */ #include #include #include int factorial(int n); int main(void) { int n; printf("enter n\n"); if (scanf("%d", &n) != 1) { printf("not number\n"); return 1; } if (n < 0) { printf("negative\n"); return 1; } printf("factorial(%d) is %d\n", n, factorial(n)); /* uncomment to see maximum int */ /* printf("maximum int %d\n", INT_MAX); */ return 0; } int factorial(int n) { int result = 1; for (int i = 1; i <= n; ++i) { /* if result * i > INTMAX */ if (result > (INT_MAX / i)) { printf("overflow!\n"); exit(1); } result *= i; } return result; }