public fraction add(fraction x) { BigInteger gcd = den.gcd(x.den); BigInteger A = x.den.divide(gcd); BigInteger B = den.divide(gcd); BigInteger newNum = num.multiply(A).add(x.num.multiply(B)); BigInteger newDen = den.multiply(A); fraction t = new fraction(newNum, newDen); t.fix(); return t; }
private void fix() { BigInteger gcd = num.gcd(den); if (gcd.compareTo(BigInteger.ONE) > 0) { num = num.divide(gcd); den = den.divide(gcd); } if (den.compareTo(BigInteger.ZERO) < 0) { num = num.negate(); den = den.negate(); } }
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean blank = false; while (scanner.hasNextBigInteger()) { if (blank) { System.out.println(); } else { blank = true; } BigInteger a = scanner.nextBigInteger(); BigInteger b = scanner.nextBigInteger(); System.out.println(a.gcd(b)); } }
long gcd(long a, long b) { BigInteger x = BigInteger.valueOf(a); BigInteger y = BigInteger.valueOf(b); return x.gcd(y).longValue(); }