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;
				}