/// <summary> /// Subtraction /// </summary> /// <param name="First">First fraction</param> /// <param name="Second">Second fraction</param> /// <returns>The subtracted fraction</returns> public static Fraction operator -(Fraction First, Fraction Second) { Fraction Value1 = new Fraction(First.Numerator * (int)Second.Denominator, First.Denominator * Second.Denominator); Fraction Value2 = new Fraction(Second.Numerator * (int)First.Denominator, Second.Denominator * First.Denominator); Fraction Result = new Fraction(Value1.Numerator - Value2.Numerator, Value1.Denominator); Result.Reduce(); return Result; }
/// <summary> /// Multiplication /// </summary> /// <param name="First">First fraction</param> /// <param name="Second">Second fraction</param> /// <returns>The resulting fraction</returns> public static Fraction operator *(Fraction First, Fraction Second) { Fraction Result = new Fraction(First.Numerator * Second.Numerator, First.Denominator * Second.Denominator); Result.Reduce(); return Result; }
/// <summary> /// Returns the lowest common denominator between 2 fractions. /// </summary> /// <param name="Fraction1">First fraction</param> /// <param name="Fraction2">Second fraction</param> /// <returns>The smallest common multiple between the given fractions.</returns> public static int LowestCommonDenominator(Fraction Fraction1, Fraction Fraction2) { Fraction f1 = Fraction1; Fraction f2 = Fraction2; if(f1.Denominator > f2.Denominator) if(f1.Denominator % f2.Denominator == 0) if(f1.Denominator > Fraction.GreatestCommonFactor(f1.Denominator, f2.Denominator)) return f1.Denominator; else return f1.Denominator / Fraction.GreatestCommonFactor(f1.Denominator, f2.Denominator); if(f2.Denominator > f1.Denominator) if(f2.Denominator % f1.Denominator == 0) if(f2.Denominator > Fraction.GreatestCommonFactor(f1.Denominator, f2.Denominator)) return f2.Denominator; else return f2.Denominator / Fraction.GreatestCommonFactor(f1.Denominator, f2.Denominator); return (f1.Denominator * f2.Denominator) / Fraction.GreatestCommonFactor(f1.Denominator, f2.Denominator); }
/// <summary> /// Returns a new fraction with reduced values, if values can be reduced. /// </summary> /// <param name="SourceFraction">Fraction you want to reduce.</param> /// <returns>Reduced fraction. i.e., a source fraction with a value of 5/10 will return a new fraction of 1/2.</returns> public static Fraction Reduce(Fraction SourceFraction) { int gcf = Fraction.GreatestCommonFactor(SourceFraction); int num = SourceFraction.Numerator / gcf; int den = SourceFraction.Denominator / gcf; return new Fraction(num, den); }
/// <summary> /// Returns the greatest common factor between the numerator & denominator of a fraction. /// </summary> /// <param name="inputFraction">The fraction to find the GCF for.</param> /// <returns>The largest integer that these numbers can both be evenly divided by.</returns> public static int GreatestCommonFactor(Fraction inputFraction) { return Fraction.GreatestCommonFactor(inputFraction.Numerator, inputFraction.Denominator); }