title: How to simplify fractions in my class?
body: <p>This is my code for class <code>Fraction</code>:</p>
  
  <pre><code>class Fraction:
      """Class for performing fraction arithmetic.
      Each Fraction has two attributes: a numerator, n and a deconominator, d.
      Both must be integer and the deonominator cannot be zero.
      """
      def __init__(self,n,d):
          """Performs error checking and standardises to ensure denominator is positive"""
          if type(n)!=int or type(d)!=int:
              raise TypeError("n and d must be integers")
          if d==0:
              raise ValueError("d must be positive")
          elif d&lt;0:
              self.n = -n
              self.d = -d
          else:
              self.n = n
              self.d = d
  
      def __str__(self):
          """Gives string representation of Fraction (so we can use print)"""
          return(str(self.n) + "/" + str(self.d))
  
      def __add__(self, otherFrac):
          """Produces new Fraction for the sum of two Fractions"""
          newN = self.n*otherFrac.d + self.d*otherFrac.n
          newD = self.d*otherFrac.d
          newFrac = Fraction(newN, newD)
          return(newFrac)
  
      def __sub__(self, otherFrac):
          """Produces new Fraction for the difference between two Fractions"""
          newN = self.n*otherFrac.d - self.d*otherFrac.n
          newD = self.d*otherFrac.d
          newFrac = Fraction(newN, newD)
          return(newFrac)
  
      def __mul__(self, otherFrac):
          """Produces new Fraction for the product of two Fractions"""
          newN = self.n*otherFrac.n
          newD = self.d*otherFrac.d
          newFrac = Fraction(newN, newD)
          return(newFrac)
  
      def __truediv__(self, otherFrac):
          """Produces new Fraction for the quotient of two Fractions"""
          newN = self.n*otherFrac.d
          newD = self.d*otherFrac.n
          newFrac = Fraction(newN, newD)
          return(newFrac)
  
      def __eq__(self,otherFrac):
          return(self.n * otherFrac.d) == (self.d * otherFrac.n)
  </code></pre>
  
  <p>To make the class more useful, how can I simplify the fraction?</p>
  
  <p>For example: I want to change 30/15 into 5/3? It looks like:<br>
  (30/2)/(18/2) ---> 15/9 -----> (15/3)/(9/3) -----> 5/3</p>
  
  <p>And I not use <code>import fraction</code>.</p>