public void GcdLcm1() { BigInteger _4611686016279904256 = ParseBigInt("4611686016279904256"); Assert((int)Integer.Gcd(-1, -1) == 1 && (int)Integer.Lcm(-1, -1) == 1); Assert((int)Integer.Gcd(0, -1) == 1 && (int)Integer.Lcm(0, -1) == 0); Assert((int)Integer.Gcd(-1, 0) == 1 && (int)Integer.Lcm(-1, 0) == 0); Assert((int)Integer.Gcd(0, 0) == 0 && (int)Integer.Lcm(0, 0) == 0); Assert((int)Integer.Gcd((BigInteger)0, 0) == 0 && (int)Integer.Lcm((BigInteger)0, 0) == 0); Assert((int)Integer.Gcd(Int32.MaxValue, Int32.MinValue) == 1); Assert((BigInteger)Integer.Lcm(Int32.MaxValue, Int32.MinValue) == _4611686016279904256); Assert((int)Integer.Gcd(Int32.MinValue, Int32.MaxValue) == 1); Assert((BigInteger)Integer.Lcm(Int32.MinValue, Int32.MaxValue) == _4611686016279904256); Assert((BigInteger)Integer.Gcd(Int32.MinValue, Int32.MinValue) == -(BigInteger)Int32.MinValue); Assert((BigInteger)Integer.Lcm(Int32.MinValue, Int32.MinValue) == -(BigInteger)Int32.MinValue); Assert((int)Integer.Gcd(Int32.MaxValue, Int32.MaxValue) == Int32.MaxValue); Assert((int)Integer.Lcm(Int32.MaxValue, Int32.MaxValue) == Int32.MaxValue); Assert((int)Integer.Gcd(Int32.MaxValue, -1) == 1); Assert((int)Integer.Lcm(Int32.MaxValue, -1) == Int32.MaxValue); Assert((int)Integer.Gcd(Int32.MinValue, -1) == 1); Assert((BigInteger)Integer.Lcm(Int32.MinValue, -1) == -(BigInteger)Int32.MinValue); }
public void Gcd(Integer left, Integer right, Integer expected) { using (Immutability.Guard(left, right)) { var actual = left.Gcd(right); Assert.Equal(expected, actual); } }
public void ModInv(Integer value, Integer modulus) { using (Immutability.Guard(value, modulus)) { var result = value.ModInv(modulus); var common = value.Gcd(modulus); if (value % modulus != 0 && common == 1) { var check = (value * result) % modulus; Assert.Equal(1, check); } else { Assert.Equal(0, result); } } }