Rationalise (Canonise) the Fractions before Addition
Normally before fractions are added, they are rationalised;
i.e., they are put in a form where their denominators become
the same. This same denominator is the LCM of the
denominators of all the separate fractions.
After this is done, the new numerators can then be added together.
Steps for Addition of Fractions Python code
The following steps will guide us in writing our code.
Let's illustrate with
2/5 + 7/4
Step 1:
Find the LCM of the denominators.
⇒ LCM of 5 & 4 = 20
Step 2:
In a turn by turn fashion, divide the found LCM from Step 1
by each denominator, multiplying the quotient by the corresponding numerator.
⇒
((2 x 4) + (7 x 5))/20
= (8 + 35)/20
Step 3:
Go ahead and add the numerators.
⇒
43/20
Create a new module file;
Call it AddFraction.pm.;
Type out the adjoining Python code for adding fractions.
Note: The code module for
finding LCM
is from the Primary Category.
Just make a copy of it into the current folder (project).
You can comment out the DivideFraction Python object
code in the main class from the previous lesson or simply continue from where it stopped.
So!
Feel free to try out your own set of numerators and denominators for fractional addition.
Python code for AddFraction Module File
class PlusFraction:
def __init__(self, fractions):
self.numerators = fractions['numerators']
self.denominators = fractions['denominators']
self.answer = 0
self.new_numerators = []
def canoniseFraction(self):
from LCM import findLCM
self.l_c_m = findLCM(self.denominators)
self.lcm = self.l_c_m.getLCM()
for count in range(len(self.denominators)):
self.new_numerators.append(int(self.lcm / self.denominators[count] * self.numerators[count]))
return None
def doAdd(self):
self.canoniseFraction()
for num in self.new_numerators: self.answer += num
return {'numerator':self.answer, 'denominator':self.lcm}
Main class
from AddFraction import PlusFraction
numerators = [1, 1, 1, 1]
denominators = [4, 4, 4, 4]
fractions = {'numerators':numerators, 'denominators':denominators}
print('\n Solving:\n')
for numerator in fractions['numerators']: print('{:13d}'.format(numerator), end='')
print('{}{:>12}'.format('\n', ' '), end='')
for wasted in range(len(numerators)-1): print('{}'.format('- + '), end='')
print('{:>1}'.format('-'))
for denominator in fractions['denominators']: print('{:13d}'.format(denominator), end='')
print('\n\n')
add_fract = PlusFraction(fractions)
fraction = add_fract.doAdd()
print('{:25d}'.format(fraction['numerator']))
print('{:>25}'.format('Answer = -'))
print('{:25d}'.format(fraction['denominator']))
print('\n\n')