public void SimplifyTest()
 {
     Fraction target = new Fraction(10, 2);
     target.Simplify();
     Assert.AreEqual(5, target.numerator);
     Assert.AreEqual(1, target.denominator);
 }
        public static Fraction operator +(Fraction a, Fraction b)
        {
            BigInteger denom = a.denominator;
            BigInteger n1 = a.numerator, n2 = b.numerator;
            if (denom != b.denominator)
            {
                denom = a.denominator * b.denominator;
                n1 = checked(n1 * b.denominator);
                n2 = checked(n2 * a.denominator);
            }

            Fraction ret = new Fraction(n1 + n2, denom);
            ret.Simplify();
            return ret;
        }
        public void op_DivisionTest()
        {
            Fraction expected = new Fraction(1, 2);
            Fraction actual = new Fraction(1) / new Fraction(2);
            Assert.AreEqual(true, expected == actual);

            expected = new Fraction(3, 2);
            actual = new Fraction(3) / new Fraction(2);
            Assert.AreEqual(true, expected == actual);

            actual = new Fraction(1, 2) / new Fraction(1, 6);
            actual.Simplify();
            expected = new Fraction(3, 1);
            Assert.AreEqual(true, expected == actual);
        }
 static void Main(string[] args)
 {
     Fraction product = new Fraction(1);
     for (int a = 10; a < 100; a++)
     {
         for (int b = a+1; b < 100; b++)
         {
             Fraction f = new Fraction(a, b);
             if (Cancels(f))
             {
                 product = product * f;
             }
         }
     }
     product.Simplify();
     Euler.Utils.OutputAnswer(product.denominator.ToString());
 }