In This Article
One of the most important applications of Python programming is in the area of mathematics. Python is highly equipped with numeric types and operations that allow coders to carry out math operations with their data.
However, some mathematical operations are complex and can be tedious to code. One such operation is the LCM (Least Common Multiple). Fortunately, Python provides us with a convenient way to do this operation without having to code it ourselves.
In this article, we will discuss the math.lcm
function provided by Python, show examples of how to make use of it and use the lcm
function to write code that adds two or more functions together. Let’s begin.
The Lowest Common Multiple (LCM) in Mathematics
Before we explore how to make use of math.lcm
function, we need to first understand the related math concept of the LCM (Least/Lowest Common Multiple). The LCM of two numbers, let us call them x
and y
, is another number that is the smallest of all the multiples that are common to x
and y
.
For example, say we had two whole numbers 12
and 18
, let us first list out their individual multiples:
12
=12
,24
,36
,48
,60
,72
, …18
=18
,36
,54
,72
,90
,108
, …
The multiples that are common to 12
, and 18
are in bold, that is, 36
, 72
, …
The smallest multiple common to both 12
and 18
is 36
.
I hope you get the concept.
There are several methods of computing the LCM manually, but that is beyond the scope of this article. Our concern is how to make use of Python math.lcm
to automate the process for us. This is what we want to touch on in the next section.
Understanding math.lcm
in Python
Python’s math
module has a repertoire of mathematical functions that can make our computations much simpler. One of the functions it provides is the lcm
function which gets the LCM of two or more whole numbers.
In order to make use of lcm
function, we need to make sure that your Python version is at least 3.9
. Then, we will have to import the math
module. The general usage is as follows:
import math
lcm_result = math.lcm(number1, number2, ...)
Here, number1
, number2
, and so on are the integer numbers we want to find the LCM of. math.lcm
is highly flexible, since we can pass in any number of arguments. This will allow us to find the LCM of even more than two numbers.
For the return values, we have the following scenarios:
- If
math.lcm
is called with all arguments equal0
, it will return0
. - If
math.lcm
has zero arguments, it will return1
- If a non-integer value (like a
float
orstr
) is passed into the function,math.lcm
will raise aTypeError
First example: LCM of two numbers
We shall try to make use of Python’s math.lcm
to find the LCM of two numbers. The code below illustrates this.
import math
num1 = 12
num2 = 18
lcm_result = math.lcm(num1, num2)
print(f"The LCM of {num1} and {num2} is: {lcm_result}")
We are making use of math.lcm
to calculate the LCM of 12
and 18
, the numbers we made use of in our previous explanation. When the code is executed, we get the following output:
Another Example: Find the LCM of three numbers
This next example will show how to find the LCM of 4, 6, and 8 using Python’s math.lcm
.
import math
num1 = 4
num2 = 6
num3 = 8
lcm_result = math.lcm(num1, num2, num3)
print(f"The LCM of {num1}, {num2}, and {num3} is: {lcm_result}")
The code in this example is similar to the previous one, but we are computing the LCM of 4
, 6
, and 8
. The output is as expected (see the below figure):
Applications of LCM: Simplifying Common Fractions
The concept of LCM in mathematics has several applications. One of the most common applications is adding/subtracting two or more common fractions. For example, we might want to simplify the following expression:
Since the denominators are not common, we will need to make use of the LCM of the denominators to convert each of the fractions into equivalent forms having common denominators. That is, since the LCM of 3
and 6
is 6
, we can do the following:
- For the first fraction, divide the LCM by the denominator
3
, to get2
, then multiply both the numerator and denominator by2
. That is:
- For the second fraction, divide the LCM by the denominator
6
, to get1
, then multiply both the numerator and denominator by1
. That is:
- Now that both converted fractions have the same denominator (thank you LCM!), we can now proceed to add them both:
Python code to Add or Subtract Common Fractions
We now want to implement Python code that will help us simplify common fractions. The expression will be given as a string value. For example, "2/3+1/6"
, and the returned result will be a string also.
For now, only addition operations will be supported to make the code easier, but you are free to extend the code to support subtraction too.
First, we have to import the math
module to make sure we can make use of lcm
and gcd
later. Then next have the following function to parse a single fraction from the string into a tuple for easy handling:
def parse_fraction(str_frac):
try:
if "/" in str_frac:
num, den = str_frac.split("/")
num = int(num)
den = int(den)
else:
num = int(str_frac)
den = 1
return num, den
except:
raise ValueError(f"fraction '{str_frac}' is not a valid fraction")
This function parse_function
splits the string at the division character /
. This helps us store the numerator and denominator as separate integers. if there’s no division character, the fraction is created with a denominator of 1
.
We next implement the function, reduce
, to help reduce a fraction to the lowest terms. The code snippet is shown below:
def reduce(fraction):
num, den = fraction
gcd = math.gcd(num, den)
num //= gcd
den //= gcd
return num, den
The function makes use of the gcd
(see how useful the math
module is?) to carry out a reduction to the lowest terms.
Moving on, we next need to convert our fraction tuple into a string representation using the fraction_to_str
function. This will prevent us from having an unreadable result. See the code snippet below:
def fraction_to_str(fraction):
num, den = fraction
if den==1:
return str(num)
return f"{num}/{den}"
Finally, we need a function that simplifies the fraction expression. All the fractions should be added up, no subtraction is allowed (as mentioned earlier). The function for this is add_fractions
, that it accepts the expression to simplify as a string.
def add_fractions(str_expr):
fractions = str_expr.split("+")
result_num = 0
result_den = 1
for fraction in fractions:
num, den = parse_fraction(fraction)
lcm = math.lcm(result_den, den)
# get the result numerator and the result denominator
result_num = result_num * (lcm // result_den) + num * (lcm // den)
result_den = lcm
return fraction_to_str(reduce((result_num, result_den)))
The add_fractions
function makes use of all the previous functions we defined to successfully simplify the fraction sum (in the string parameter).
That’s just about it. We now have a simple Python code to help us add two or more common fractions. Sample usage is as follows:
print(add_fractions("1/2+1/2")) # outputs 1
print(add_fractions("1/3+1/3+1/3")) # outputs 1
print(add_fractions("2/3+1/6")) # outputs 5/6
print(add_fractions("3/4+1/6")) # outputs 11/12
The comments show the corresponding outputs for each call to add_fractions
.
We have successfully made use of the math.lcm
to create a function to add fractions. The code can be extended in any way you want. for example
- The fractions could become a
Fraction
object. - The function
add_fractions
could become an__add__
method. - A
__sub__
method could be added to support subtraction. - The function
reduce
could be made into a method that helps reduce aFraction
object to lowest terms.
The least common multiple (LCM) is a fundamental concept in mathematics and is used in various scenarios, for example adding and subtracting fractions.
Python has provided the lcm
function in the math
module to make it easy to calculate the LCM of two or more whole numbers. We have also implemented a simple Python code that demonstrates the usefulness of math.lcm
helping us add common fractions together.
If you enjoyed this tutorial, please check out our knowledgebase for more tutorials like this one on Python programming that will help you in your coding journey. Meanwhile, have fun coding!