public Rational(long numerator, long denominator) { var gcd = EulerMath.GCD(numerator, denominator); var denominatorNegativeFactor = denominator > 0 ? 1 : -1; Numerator = denominatorNegativeFactor * numerator / gcd; Denominator = denominatorNegativeFactor * denominator / gcd; }
public RationalBigInteger(BigInteger numerator, BigInteger denominator) { var gcd = EulerMath.GCD(numerator, denominator); var denominatorNegativeFactor = denominator > 0 ? 1 : -1; Numerator = denominatorNegativeFactor * numerator / gcd; Denominator = denominatorNegativeFactor * denominator / gcd; }
public ResidueClass Chinese(ResidueClass other) { var(u, _, gcd) = EulerMath.ExtendedEuclidean(Modulus, other.Modulus); var lcm = Modulus / gcd * other.Modulus; if (Value % gcd != other.Value % gcd) { throw new ArgumentException("Geen oplossing"); } var l = (Value - other.Value) / gcd; return(new ResidueClass(Value - Modulus * u * l, lcm)); }
public void GreatestCommonFactor() { Assert.AreEqual(8, EulerMath.GreatestCommonFactor(8, 16)); Assert.AreEqual(1, EulerMath.GreatestCommonFactor(7, 51)); }
public void Factorial4() { Assert.AreEqual(new BigInteger(24), EulerMath.Factorial(4)); }
public void Factorial10() { Assert.AreEqual(new BigInteger(3628800), EulerMath.Factorial(10)); }