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