Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
33
Task/Arithmetic-Rational/Python/arithmetic-rational-2.py
Normal file
33
Task/Arithmetic-Rational/Python/arithmetic-rational-2.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
def lcm(a, b):
|
||||
return a // gcd(a,b) * b
|
||||
|
||||
def gcd(u, v):
|
||||
return gcd(v, u%v) if v else abs(u)
|
||||
|
||||
class Fraction:
|
||||
def __init__(self, numerator, denominator):
|
||||
common = gcd(numerator, denominator)
|
||||
self.numerator = numerator//common
|
||||
self.denominator = denominator//common
|
||||
def __add__(self, frac):
|
||||
common = lcm(self.denominator, frac.denominator)
|
||||
n = common // self.denominator * self.numerator + common // frac.denominator * frac.numerator
|
||||
return Fraction(n, common)
|
||||
def __sub__(self, frac):
|
||||
return self.__add__(-frac)
|
||||
def __neg__(self):
|
||||
return Fraction(-self.numerator, self.denominator)
|
||||
def __abs__(self):
|
||||
return Fraction(abs(self.numerator), abs(self.denominator))
|
||||
def __mul__(self, frac):
|
||||
return Fraction(self.numerator * frac.numerator, self.denominator * frac.denominator)
|
||||
def __div__(self, frac):
|
||||
return self.__mul__(frac.reciprocal())
|
||||
def reciprocal(self):
|
||||
return Fraction(self.denominator, self.numerator)
|
||||
def __cmp__(self, n):
|
||||
return int(float(self) - float(n))
|
||||
def __float__(self):
|
||||
return float(self.numerator / self.denominator)
|
||||
def __int__(self):
|
||||
return (self.numerator // self.denominator)
|
||||
Loading…
Add table
Add a link
Reference in a new issue