代码实现:
package org.example.and.check.set;
import java.util.Scanner;
public class test12{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//求x,y的最大公约数
int x=scanner.nextInt();
int y=scanner.nextInt();
System.out.println(greatestCommonDivisor(x,y));
}
public static int greatestCommonDivisor(int x,int y){
// 辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,
// 用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
//大数作为除数,小数作为被除数,每次递归的除数为上次的被除数,而每次的被除数为上次的余数
return y == 0 ? x : greatestCommonDivisor(y, x %y);
}
}
测试:
6
8
2