# Python Program to Find the Factorial of a Number

Factorial of a non-negative integer, is multiplication of all integers smaller than or equal to n.

For example factorial of 6 is 6*5*4*3*2*1 which is 720.

### Find the Factorial of a Number Using Recursive approach

This Python program uses a recursive function to calculate the factorial of a given number. The factorial is computed by multiplying the number with the factorial of its preceding number.

## python3

 `# Python 3 program to find ``# factorial of given number``def` `factorial(n):``    ` `    ``# single line to find factorial``    ``return` `1` `if` `(n``=``=``1` `or` `n``=``=``0``) ``else` `n ``*` `factorial(n ``-` `1``) ` `# Driver Code``num ``=` `5``print``(``"Factorial of"``,num,``"is"``,factorial(num))`

Output:

`Factorial of 5 is 120`

Time Complexity: O(n)
Auxiliary Space: O(n)

Example 1:

## python3

 `# Python 3 program to find  ``# factorial of given number``def` `factorial(n):``    ``if` `n < ``0``:``        ``return` `0``    ``elif` `n ``=``=` `0` `or` `n ``=``=` `1``:``        ``return` `1``    ``else``:``        ``fact ``=` `1``        ``while``(n > ``1``):``            ``fact ``*``=` `n``            ``n ``-``=` `1``        ``return` `fact` `# Driver Code``num ``=` `5``print``(``"Factorial of"``,num,``"is"``,``factorial(num))` `# This code is contributed by Dharmik Thakkar`

Output:

`Factorial of 5 is 120`

Time Complexity: O(n)
Auxiliary Space: O(1)

Example 2:

## Python3

 `# Python 3 program to find``# factorial of given number`` ` `# Function to find factorial of given number``def` `factorial(n):``      ` `    ``res ``=` `1``     ` `    ``for` `i ``in` `range``(``2``, n``+``1``):``        ``res ``*``=` `i``    ``return` `res`` ``# Driver Code``num ``=` `5``print``(``"Factorial of"``, num, ``"is"``,``factorial(num))`

Output
`Factorial of 5 is 120`

Time Complexity: O(n)
Auxiliary Space: O(1)

## Python3

 `# Python 3 program to find``# factorial of given number` `def` `factorial(n):` `    ``# single line to find factorial``    ``return` `1` `if` `(n``=``=``1` `or` `n``=``=``0``) ``else` `n ``*` `factorial(n ``-` `1``) `  `# Driver Code``num ``=` `5``print` `(``"Factorial of"``,num,``"is"``,``      ``factorial(num))` `# This code is contributed``# by Smitha Dinesh Semwal.`

Output:

`Factorial of 5 is 120`

Time Complexity: O(n)
Auxiliary Space: O(n)

### Find the Factorial of a Number Using using In-built function

In Python, math module contains a number of mathematical operations, which can be performed with ease using the module. math.factorial() function returns the factorial of desired number.

Syntax: math.factorial(x)

Parameter:
x: This is a numeric expression.

Returns:  factorial of desired number.

## Python3

 `# Python 3 program to find``# factorial of given number``import` `math` `def` `factorial(n):``    ``return``(math.factorial(n))`  `# Driver Code``num ``=` `5``print``(``"Factorial of"``, num, ``"is"``,``      ``factorial(num))` `# This code is contributed by Ashutosh Pandit`

Output:

`Factorial of 5 is 120`

Time complexity: O(1)

Auxiliary space: O(1)

## Python3

 `import` `numpy``n``=``5``x``=``numpy.prod([i ``for` `i ``in` `range``(``1``,n``+``1``)])``print``(x)`

### Output

`120`

Time Complexity: O(n)
Auxiliary Space: O(1)

### Prime Factorization Method to find Factorial

1. Initialize the factorial variable to 1.
2. For each number i from 2 to n, do the following:
a. Find the prime factorization of i.
b. For each prime factor p and its corresponding power k in the factorization of i, multiply the factorial variable by p raised to the power of k.
3. Return the factorial variable.

## Python3

 `# Python 3 program to find factorial``# of a given number using prime``# factorization method.` `# Function to find prime factors of a number``def` `primeFactors(n):``    ``factors ``=` `{}``    ``i ``=` `2``    ``while` `i``*``i <``=` `n:``        ``while` `n ``%` `i ``=``=` `0``:``            ``if` `i ``not` `in` `factors:``                ``factors[i] ``=` `0``            ``factors[i] ``+``=` `1``            ``n ``/``/``=` `i``        ``i ``+``=` `1``    ``if` `n > ``1``:``        ``if` `n ``not` `in` `factors:``            ``factors[n] ``=` `0``        ``factors[n] ``+``=` `1``    ``return` `factors` `# Function to find factorial of a number``def` `factorial(n):``    ``result ``=` `1``    ``for` `i ``in` `range``(``2``, n``+``1``):``        ``factors ``=` `primeFactors(i)``        ``for` `p ``in` `factors:``            ``result ``*``=` `p ``*``*` `factors[p]``    ``return` `result` `# Driver Code``num ``=` `5``print``(``"Factorial of"``, num, ``"is"``, factorial(num))`

Output
`Factorial of 5 is 120`

Time Complexity: O(sqrt(n))

Auxiliary Space: O(sqrt(n))

Please refer complete article on Program for factorial of a number for more details!

Previous
Next