Stepik - 2.3. Наибольший общий делитель
Описание задачи
По данным двум числам 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));
}
}