def mdc(n1, n2): while n1 % n2 != 0: r = n1 % n2 n1 = n2 n2 = r return n2 def mmc(n1, n2): d = mdc(n1, n2) return (n1 * n2) / d class Fracao: def __init__(self, num, den=1): self.num = num self.den = den self.simp() def __add__(self, outro): # outro e um objeto Fracao den_r = self.den * outro.den num_r = (den_r/self.den)*self.num + (den_r/outro.den)*outro.num return Fracao(num_r, den_r) def __sub__(self, outro): # outro e um objeto Fracao den_r = self.den * outro.den num_r = (den_r/self.den)*self.num - (den_r/outro.den)*outro.num return Fracao(num_r, den_r) def __mul__(self, outro): return Fracao(self.num*outro.num, self.den*outro.den) def __div__(self, outro): return Fracao(self.num*outro.den, self.den*outro.num) def __repr__(self): if self.den == 1: return str(self.num) else: return str(self.num) + "/" + str(self.den) def __eq__(self, outro): return self.num == outro.num and self.den == outro.den def __lt__(self, outro): z = (self - outro) return z.num < 0 def __le__(self, outro): z = (self - outro) return z.num <= 0 def __gt__(self, outro): z = (self - outro) return z.num > 0 def __ge__(self, outro): z = (self - outro) return z.num >= 0 def simp(self): d = mdc(self.num, self.den) self.num = self.num / d self.den = self.den / d return self