前言
众所周知,辗转相除法是用来计算两个数的最大公约数的经典算法之一。该算法最早古希腊数学家欧几里得在其著作《The Elements》中有描述,所以又被叫做欧几里得算法。
算法步骤
已知两个数,例如:9和12
计算最大公约数过程如下:
12 % 9 = 3
9 % 3 = 0
余数为0时停止运算,最大公约数为3
Java代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] value = input();
System.out.println(gcd(value[0], value[1]));
}
static int[] input() {
Scanner sc = new Scanner(System.in);
int[] value = new int[2];
value[0] = sc.nextInt();
value[1] = sc.nextInt();
sc.close();
return value;
}
// 辗转相除法
static int gcd(int a, int b) {
// 余数不为零,辗转相除
while(a > b ? a % b != 0 : b % a != 0) {
int tmp;
if (a > b) {
tmp = a;
a = b;
b = tmp % b;
} else {
tmp = b;
b = a;
a = tmp % a;
}
}
return a > b ? b : a;
}
}