gcd_main.py
#!/usr/bin/env python3
from gcd import *
def main():
G = GCD(16, 88)
G.gcd()
print("")
print(G.gcd_euclid.__doc__)
G.gcd_euclid()
H = GCD(16, 88)
H.gcd_euclid2()
if __name__ == '__main__':
main()
gcd.py
#!/usr/bin/env/ python3
class GCD:
def __init__(self, x, y):
self.x = x
self.y = y
def gcd(self):
# find smaller number
print("")
smaller_number = 0
if self.x > self.y:
smaller_number = self.y
else:
smaller_number = self.x
# use smaller number to calculate greatest common divisor
GCD = 0
for i in range(1, smaller_number + 1):
if (self.x % i == 0) and (self.y % i == 0):
GCD = i
print("The Greatest Common divisor of {} and {} is {}".format(self.x, self.y, GCD))
def gcd_euclid(self):
''' DOC: Euclidean method: Number m can be written as m = qn + r, where q in the quotient and
r is the reminder. Recursive substitution of r with q and q with m until the remainder is 0
will ultimately deliver the GCD for the pair since gcd(n,0) = n.
'''
a = self.x
b = self.y
r_val = self.x % self.y
q_val = int(self.x / self.y)
while r_val != 0:
self.x = self.y
self.y = r_val
q_val = int(self.x / self.y)
r_val = self.x - (self.y * q_val)
print("The Greatest Common divisor of {} and {} using euclidean method is {}".format(a, b, self.y))
def gcd_euclid2(self):
a = self.x
b = self.y
if self.x < self.y:
(self.x, self.y) = (self.y, self.x)
while self.x % self.y != 0:
(self.x, self.y) = (self.y, self.x % self.y)
print("The Greatest Common divisor of {} and {} using euclidean method two is {}".format(a, b, self.y))
output.py
The Greatest Common divisor of 16 and 88 is 8
DOC: Euclidean method: Number m can be written as m = qn + r, where q in the quotient and
r is the reminder. Recursive substitution of r with q and q with m until the remainder is 0
will ultimately deliver the GCD for the pair since gcd(n,0) = n.
The Greatest Common divisor of 16 and 88 using euclidean method is 8
The Greatest Common divisor of 16 and 88 using euclidean method two is 8
Process finished with exit code 0