# Find factors of a number in python :

In this tutorial, we will learn how to find the *factors* of a number in python. The program will ask the user to enter a *number*. It will then print out the *factors* for that number. For example, if the number is *12*, it will print *1,2,3,4,6,12* as the output.

## Algorithm to use :

*The following algorithm we will use to solve this problem :*

- Ask the user to enter a
*number*. Read it, and store it in a*variable*. - Using one
*loop*, check for all numbers if it is a*divisor*or not starting from*1*to the user-provided number. - If any number is a
*divisor*, print out the number. - Exit the program.

As you can see, we will use one *loop* to print out the factors of a number. We will show you to solve this problem by using a *for loop* and *while loop*. Both approaches will give the same output.

## Python program to find factors of a number using for loop :

Let’s try to find out the factors using a *for* loop :

```
#1
def print_factors(n):
#2
for i in range(1, n+1):
#3
if n % i == 0:
print(i)
#4
number = int(input("Enter a number : "))
#5
print("The factors for {} are : ".format(number))
print_factors(number)
```

### Explanation :

*The commented numbers in the above program denote the step numbers below:*

- Create one method
*print_factors*to find out all factors of a number. This function takes one*integer*value as a parameter. - Using one
*for*loop, iterate over the numbers from*1*to*n*. - Check for each number in the loop if it is a
*divisor*of the given number or not. If*yes*, print out the number. - This is the actual start point of the program. Ask the user to enter a number. Read the input value as an
*integer*and store it in variable*number*. - Print out the factors for that number using the
*print*factors_ method.

### Sample output :

```
Enter a number : 12
The factors for 12 are :
1
2
3
4
6
12
Enter a number : 20
The factors for 20 are :
1
2
4
5
10
20
```

## Python program to find factors of a number using while loop :

Now, let’s try to find out the factors using a *while* loop :

```
def print_factors(n):
i = 1
while(i < n+1):
if n % i == 0:
print(i)
i = i + 1
number = int(input("Enter a number : "))
print("The factors for {} are : ".format(number))
print_factors(number)
```

### Explanation :

As you can see, only the print_factors method is different from this approach.

- Initialize one variable
*i*as*1*at the start of this method. - Using one
*while*loop, iterate till*i*is less than*n+1.* - Check if the current value is a divisor of
*n*or not. If yes, print out the value. - Increment the value of
*i.*

### Output :

```
Enter a number : 21
The factors for 21 are :
1
3
7
21
Enter a number : 15
The factors for 15 are :
1
3
5
15
```

*The above example programs are available on Github.*

### Conclusion :

As you can see that using a *for loop* or *while loop*, we can find out the *factors* of a number. Try to run both programs and drop one comment below if you have any queries.

### Similar tutorials :

- Python program to find out the sum of odd and even numbers in a list
- Python program to find out the largest divisor of a number
- Python program to find the smallest divisor of a number
- Python program to convert an integer number to octal
- Python program to print the odd numbers in a given range
- Python program to find the gcd of two numbers using fractions module