How to Find Factors of a Given Number Using Python
The following python program prints all the positive factors of a given input number. This program demonstrates the use of functions, modulus operator, list data structure and if statement.
def get_all_factors(n): factors = [] for i in range(1,n+1): if n%i == 0: factors.append(i) return factors number = int(input("Please enter a number: ")) list_of_factors = get_all_factors(number) print("factors of {} are: {}".format(number,list_of_factors))
Here is how the above program works,
- We define a function get_all_factors() which takes a number as input and returns a list of factors.
- This function initially creates an empty list. The function then iterates through number 1 to the input number using the built-in function range(). If the reminder is 0, we know that the number is a factor of input number and hence we add it to the factors list.
- Finally the factors list is returned.
- The program execution starts at the first line after the function declaration. We accept a user input using the built-in function input() and then convert to a number using the function int()
- We then find all the factors of the number by calling the get_all_factors() function.
- We use the built-in function print() with format() function to output the results.
Here is a sample output from the program,
Please enter a number: 25
factors of 25 are: [1, 5, 25]
We can easily extend the above program to print factors of all numbers below a given number,
def get_all_factors(n): factors = [] for i in range(1,n+1): if n%i == 0: factors.append(i) return factors number = int(input("Please enter the upper limit: ")) for i in range(1,number+1): list_of_factors = get_all_factors(i) print("factors of {} are: {}".format(i,list_of_factors))
Here is a sample output from the above program,
Please enter the upper limit: 6
factors of 1 are: [1]
factors of 2 are: [1, 2]
factors of 3 are: [1, 3]
factors of 4 are: [1, 2, 4]
factors of 5 are: [1, 5]
factors of 6 are: [1, 2, 3, 6]
We know that numbers with exact two factors are prime numbers! Hence we can extend the above program to indicate which of them are prime numbers,
def get_all_factors(n): factors = [] for i in range(1,n+1): if n%i == 0: factors.append(i) return factors number = int(input("Please enter the upper limit: ")) for i in range(1,number+1): list_of_factors = get_all_factors(i) if(len(list_of_factors) == 2): print("factors of {} are: {} and is prime!".format(i,list_of_factors)) else: print("factors of {} are: {}".format(i,list_of_factors))
Sample output from the above program is,
Please enter the upper limit: 10
factors of 1 are: [1]
factors of 2 are: [1, 2] and is prime!
factors of 3 are: [1, 3] and is prime!
factors of 4 are: [1, 2, 4]
factors of 5 are: [1, 5] and is prime!
factors of 6 are: [1, 2, 3, 6]
factors of 7 are: [1, 7] and is prime!
factors of 8 are: [1, 2, 4, 8]
factors of 9 are: [1, 3, 9]
factors of 10 are: [1, 2, 5, 10]