# C Program: Factorial of a Number

The factorial of a given positive integer $n$ is defined as the product of all whole numbers from 1 to $n$.

It is denoted by $n!$

$n! = n\times(n-1)\times ... \times1$

We calculate factorials only of positive integers, hence we specify the input number `n`

as of type `unsigned short int`

. The counter `i`

will also always be positive, hence it is also assigned to type `unsigned short int`

. The computed factorial `factorial`

again is always going to be a positive, hence, we define it to be of type `unsigned long int`

.

Also, note that $0! = 1$.

Below we write a C program which computes the factorial of a given number $n$.

` ````
#include <stdio.h>
int main() {
unsigned short int i, n;
unsigned long int factorial = 1;
printf("Enter a positive integer: ");
scanf("%hu", &n);
for(i = 1; i <=n; i++) {
factorial = factorial * i;
}
printf("Factorial of %hu is %lu \n", n, factorial);
return 0;
}
```

We run the program to compute $5!$ and get the output as shown below:

` ````
$ ./a.out
Enter a positive integer: 5
```

There is a powerful online computing engine called Wolfram Alpha which you can use for getting accurate factorials of big numbers.

Below we compute the factorial of 12.

We can also define a recursive function and call it to compute the required factorial as shown in the program below.

` ````
#include <stdio.h>
unsigned long factorial(unsigned short int);
int main() {
unsigned short int n;
printf("Enter a positive integer: ");
scanf("%hu", &n);
printf("Factorial of %hu is %lu", n, factorial(n));
return 0;
}
unsigned long factorial(unsigned short n) {
unsigned long f;
if(n == 0 || n == 1)
return 1;
else
f = n * factorial(n-1);
return f;
}
```