public static Numero dividir(Entero dividendo, Entero divisor) { Numero maximoComunDivisor = dividendo.maximoComunDivisorCon(divisor); Numero numerador = dividendo.divisionEntera(maximoComunDivisor); Numero denominador = divisor.divisionEntera(maximoComunDivisor); dynamic numeradorNoTipado = Convert.ChangeType(numerador, numerador.GetType()); dynamic denominadorNoTipado = Convert.ChangeType(denominador, denominador.GetType()); Assert.IsFalse(numerador is Entero && numerador.Equals(new Entero(1))); Assert.IsFalse(numerador is Entero && numerador.Equals(new Entero(0))); return(dividirCoprimos(numeradorNoTipado, denominadorNoTipado)); }
public static Numero dividir(Entero dividendo, Entero divisor) { if (divisor.esCero()) { throw new Exception(Numero.DESCRIPCION_DE_ERROR_NO_SE_PUEDE_DIVIDIR_POR_CERO); } if (dividendo.esCero()) { return(dividendo); } Entero maximoComunDivisor = dividendo.maximoComunDivisorCon(divisor); Entero numerador = dividendo.divisionEntera(maximoComunDivisor); Entero denominador = divisor.divisionEntera(maximoComunDivisor); if (denominador.esUno()) { return(numerador); } return(new Fraccion(numerador, denominador)); }