diff --git a/src/lib.rs b/src/lib.rs index 140eba1..fecfa75 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -54,15 +54,27 @@ impl Fraction { } fn gcd(a: i64, b: i64) -> i64 { - todo!(); + if a == 0 { + return b; + } + Fraction::gcd(b % a, a) } fn reduce(&mut self) { - todo!(); + let gdc = Fraction::gcd(self.num, self.den); + + self.num /= gdc; + self.den /= gdc; } fn correct_sign(&mut self) { - todo!() + if self.num < 0 && self.den < 0 { + self.num = self.num.abs(); + self.den = self.den.abs(); + } else if self.den < 0 { + self.num = -self.num; + self.den = self.den.abs(); + } } }