usingMaths.com
From Theory to Practice - Math You Can Use.







<< PreviousNext >>

How to find all Factors of a Number in Python



What are Factors? | Maths Explanation for Python Kids

Factors are the complete set of integers that will divide a particular numbers without remainder.
Take 36 as an example, it's complete set are:

1, 2, 3, 4, 6, 9, 12, 18, and 36.

Other than prime numbers, every other number has at least one factor - not considering 1 as factor.
Where there is just one factor, then this factor is the square root of the number in question;
In this guide, we'll explore the math behind factors-of-numbers and walk through how to code a Python algorithm for listing factors in a simple and fun way.


Code Logic for Factorising Numbers in Python - Fun Maths Exercise

Actually, we've been doing factors over the last two demonstrations (lessons).

We can implement a Python algorithm for factorising a number by simply checking for our factors using the square-root of number range.
We'll start from 1 (which is always a factor).
For each found factor, we'll get the corresponding complementary factor by dividing the number (whose factors we are trying to find), by the found factor.
This Math activity and Python script help primary school students understand factorization by listing all factors of a number.


Create a new Python module file; File, New File.
Call it listFactors.py.

Type out the adjoining Python code for finding the factors of a number.


Note: You can comment out the Python code for the main class from the previous lesson if you have been following.


So! Python Fun Practice Exercise - List Factors

As a fun practice exercise, feel free to try out your own different numbers, and see how the Python code lists the factors of those numbers.









Python Code for List Factors - Module File.

from math import ceil, sqrt

# A class
class Factors:
    # Simulate a constructor
    def __init__(self, candidate):
        self.find_my_factors = candidate
        self.found_factors = [1, self.find_my_factors] # 1 and itself are automatic factors
        self.sqrt_range = ceil(sqrt(self.find_my_factors))

    # Returns an array reference of the desired factors
    def findFactors(self):
        # Loop through 1 to 'find_my_factors' and test for divisibility.
        for self.count in range(2, self.sqrt_range):
            if self.find_my_factors % self.count == 0:
                self.found_factors.append(self.count)
                # Get the complementing factor by dividing 'find_my_factor' by variable count.
                self.found_factors.append(int(self.find_my_factors / self.count))

        # Sort the array in ascending order Not entirely necessary.
        self.found_factors.sort()

        return self.found_factors


Python Code for List Factors - Main Class.

#!/usr/bin/python
from ListFactors import Factors

# Use the list factors module/class
test_guy = 48
factor_list = Factors(test_guy)
answer = factor_list.findFactors()
print("Factors of test_guy include:\n"" ".join(str(answer)))


print("\n\n")




<< PreviousNext >>