Описание задачи

По данным двум числам 1≤a,b≤2⋅10^{9} найдите их наибольший общий делитель.

import java.math.BigInteger;
import java.util.Scanner;

/**
 * Main
 *
 * @author Vladislav Sidlyarevich <vlsidlyarevich@gmail.com>
 * Created on 2/19/21.
 */
public class Main {

    //По данным двум числам 1≤a,b≤2⋅10^{9}
    //найдите их наибольший общий делитель.
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        BigInteger a = scanner.nextBigInteger();
        BigInteger b = scanner.nextBigInteger();
        scanner.close();
        System.out.println(calculate(a, b));
    }

    private static BigInteger calculate(BigInteger a, BigInteger b) {
        if (a.compareTo(BigInteger.ZERO) == 0) return b;
        if (b.compareTo(BigInteger.ZERO) == 0) return a;

        if (a.compareTo(b) > 0) return calculate(a.mod(b), b);
        else return calculate(a, b.mod(a));
    }
}