# How to get factorial in Python?

Before version **2.6 of Python**, you had to calculate the factorial by writing your own function/code. From version 2.6 and above, the factorial can be calculated by using the built-in function **math.factorial(x)** which is part of the **math** module.

In this tutorial, I will show you examples of getting the factorial by both ways: Using the math module’s factorial function and writing custom functions for getting the factorial.

**How to use factorial function?**

The built-in factorial function can be used as follows:

math.factorial(x)

The function returns the factorial of argument *x.*

If a negative value or non-integral value is given, the * ValueError *is generated.

**An example of factorial function**

In this example, I used four different integer values to get the factorial by using the math.factorial function. See the code and output below:

1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Factorial function demo from math import factorial print ("The factorial of 10 = " ,factorial(10)) print ("The factorial of 20 = " ,factorial(20)) print ("The factorial of 25 = " ,factorial(25)) print ("The factorial of 100 = " ,factorial(30)) |

**The result:**

The factorial of 10 = 3628800

The factorial of 20 = 2432902008176640000

The factorial of 25 = 15511210043330985984000000

The factorial of 100 = 265252859812191058636308480000000

**What if a non-integer is passed to factorial function?**

The example shows using a float number in the factorial function. See what it results in?

1 2 3 4 5 6 7 |
#Facotial function demo from math import factorial print ("The factorial of float number 11.5 = " ,factorial(11.5)) |

**The result:**

“ValueError: factorial() only accepts integral values”

**Did you know?** The factorial for 0 is equal to 1.

**Writing a custom function for getting factorial**

If you still prefer writing your own function to get the factorial then this section is for you. Here, I will give three different functions for getting the factorial of a number. The aim of each function is to multiply the numbers downwards until it reaches 1 from the given number:

**Function Number 1:**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#Custom Factorial function demo def factorial(x): #If 0 is passed as argument then result should be 1 if x == 0: return 1 else: return x * factorial(x-1) print ("Factorial of 0 = ", factorial(0)) print ("Factorial of 1 = ", factorial(1)) print ("Factorial of 2 = ", factorial(2)) print ("Factorial of 3 = ", factorial(3)) print ("Factorial of 4 = ", factorial(4)) print ("Factorial of 5 = ", factorial(5)) print ("Factorial of 6 = ", factorial(6)) print ("Factorial of 7 = ", factorial(7)) |

**The output:**

**Using for loop and range example**

In the following custom function for getting the factorial, a for loop and range is used. The factorial of 0 and other numbers is as shown in the output below:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#Custom Factorial function #2 demo def factorial(n): x = 1 for i in range(n,0,-1): x = x * i return x print ("Factorial of 0 = ", factorial(0)) print ("Factorial of 1 = ", factorial(1)) print ("Factorial of 17 = ", factorial(17)) print ("Factorial of 19 = ", factorial(19)) print ("Factorial of 21 = ", factorial(21)) print ("Factorial of 23 = ", factorial(23)) print ("Factorial of 25 = ", factorial(25)) print ("Factorial of 27 = ", factorial(27)) |

**The output:**

Factorial of 0 = 1

Factorial of 1 = 1

Factorial of 17 = 355687428096000

Factorial of 19 = 121645100408832000

Factorial of 21 = 51090942171709440000

Factorial of 23 = 25852016738884976640000

Factorial of 25 = 15511210043330985984000000

Factorial of 27 = 10888869450418352160768000000

**Using while loop to calculate factorial**

This function uses a while loop for calculating the factorial of the given number:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#Custom Factorial function by while loop def factorial(number): x = 1 while number >= 1: x = x * number number = number - 1 return x print ("0 = ", factorial(0)) print ("1 = ", factorial(1)) print ("11 = ", factorial(11)) print ("15 = ", factorial(15)) print ("17 = ", factorial(17)) print ("19 = ", factorial(19)) print ("21 = ", factorial(21)) print ("23 = ", factorial(23)) |

**The result:**

0 = 1

1 = 1

11 = 39916800

15 = 1307674368000

17 = 355687428096000

19 = 121645100408832000

21 = 51090942171709440000

23 = 25852016738884976640000