Factorial of a Number - Python

Last Updated : 17 Mar, 2026

Given an integer n, the task is to compute its factorial, i.e., the product of all positive integers from 1 to n. Factorial is represented as n! and is commonly used in mathematics, permutations and combinatorics. For Example:

Input: n = 6
Output: 720
Explanation: 6! = 6 × 5 × 4 × 3 × 2 × 1 = 720

Let's explore different methods to find the factorial of a number in Python.

Using math.factorial()

This method computes the factorial using Python’s built-in factorial() function, which performs the entire calculation internally without requiring loops or recursion in user code.

Python
import math

n = 6
print(math.factorial(n)) 

Output
720

Using NumPy's np.prod()

NumPy performs multiplication through optimized C-level operations. It computes the factorial by multiplying all numbers from 1 to n in a single vectorized step using np.prod().

python
import numpy as np

n = 6
if n >= 0:
    print(np.prod(range(1, n+1)))  
else:
    print("Factorial is not defined for negative numbers")

Output
720

Explanation:

  • if n >= 0: Ensures factorial is only calculated for non-negative numbers.
  • np.prod(range(1, n+1)): Multiplies all integers from 1 to n using NumPy’s optimized product function.

Using an Iterative For Loop

This method calculates factorial by manually multiplying the numbers from 1 to n inside a for loop.

Python
n = 6
if n < 0:
    print("Factorial is not defined for negative numbers")
else:
    f = 1
    for i in range(1, n+1):
        f *= i
    print(f)  

Output
720

Explanation:

  • if n < 0: Checks for negative numbers; factorial isn’t defined.
  • f = 1: Initializes the product.
  • for i in range(1, n+1): f *= i Multiplies all numbers from 1 to n iteratively.

Using a Recursive Function

This approach follows the mathematical definition of factorial by repeatedly calling the function with decreasing values until reaching the base case.

Python
def fact(n):
    if n < 0:
        return "Factorial is not defined for negative numbers"
    return 1 if n <= 1 else n * fact(n-1)

print(fact(6))  
print(fact(-3)) 

Output
720
Factorial is not defined for negative numbers

Explanation:

  • if n < 0: Handles negative numbers; factorial isn’t defined for them.
  • return 1 if n <= 1 else n * fact(n-1): Recursive calculation multiplies n by factorial of n-1 until base case (0! or 1! = 1).
Comment