Signup/Sign In

Python Program to find factorial of a number

In this tutorial, we will learn how to find the factorial of a number and display it. The factorial of a non-negative number is the product of all the integers from 1 to that number. Factorial of a negative number is not defined and the factorial of 0 is always 1.

For example, Factorial of 7 is: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040

Formula

factorial

The program should take input as follows and return the factorial of that number.

Input- Enter number: 5

Output- Factorial: 120

Input- Enter number: 4

Output- Factorial: 24

There are three different approaches to execute this task in Python:

  1. Using a recursive function
  2. Using conditional statements and loops
  3. Using built-in factorial() function

Let us look at these approaches individually,

Program 1: using recursion

As discussed earlier in this tutorial, recursion is a process in which the function calls itself directly or indirectly in a program. We will define a recursive function for finding the factorial of a number given by the user. Follow the algorithm to understand the working process better.

Algorithm

Step 1 - Define function factorial() to calculate factorial

Step 2 - Check if the entered number is 1 or 0, if true return the number

Step 3 - If false, call the function recursively to calculate factorial of the number minus 1

Step 4 - Return the value of the number multiplied by the factorial of the number minus 1

Step 5 - Print the result

Python Program 1

Look at the program to understand the implementation of the above-mentioned approach.

def factorial(n):
    if (n==1 or n==0):
        return 1 
    else:
        return n * factorial(n - 1)
 
num = int(input("Enter number: "))
x=factorial(num)
print("Factorial of",num,"is",x)


Enter number: 5
Factorial of 5 is 120

Program 2: using conditional statements and loops

In this program, we will use conditional statements like if, elif and else and we will use a looping statement. Conditional statements in Python perform specific tasks depending on whether the condition evaluates as true or false. Whereas loops are used to execute a statement repeatedly. Look at the algorithm mentioned below to understand how we will use these features to find factorial.

Algorithm

Step 1 - Take input from the user

Step 2 - Declare a variable factorial and initialise it to 1

Step 3 - Check if the number is positive or negative

Step 4 - If negative, print "Factorial doest not exist"

Step 5 - For positive numbers, if the number is 0 print factorial as 1

Step 6 - Else run a loop from 1 to the number and multiply each iteration with the value of factorial

Step 7 - Print the result

Python Program 2

Look at the program to understand the implementation of the above-mentioned approach.

num = int(input("Enter number: "))
factorial = 1
if num < 0:
   print("factorial does not exist for negative numbers")
elif num == 0:
   print("The factorial of 0 is 1")
else:
   for i in range(1,num + 1):
       factorial = factorial*i
   print("The factorial of",num,"is",factorial)


Enter number: 5
The factorial of 5 is 120

Program 3: using built-in math function

In the math class of the Python library, there is a built-in function to calculate the factorial of a number. The function factorial() is used to find the factorial of any number.

Algorithm

Step 1 - Import math class

Step 2 - Define a function that returns factorial

Step 3 - Call math.factorial()

Step 4- Print result returned by the function

Python Program 3

Look at the program to understand the implementation of the above-mentioned approach.

import math
def factorial(n):
    return(math.factorial(n))
 
num = int(input("Enter number: "))
print("Factorial of", num, "is",factorial(num))


Enter number: 10
Factorial of 10 is 3628800