public Rational(int numerator = 1, int divider = 1) { if (divider == 0) { throw new DivideByZeroException(); } var(n, d) = GCD.ReduceNumber(Math.Abs(numerator), Math.Abs(divider)); this.numerator = n; this.divider = d; this.sign = (numerator * divider >= 0) ? 1 : -1; }
public static (int, int) ReduceNumber(int numerator, int divider) { int maxDivider = GCD.findGCD(numerator, divider); return(numerator / maxDivider, divider / maxDivider); }