代码实现:
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,则这两个数的最大公约数为上一步的余数。 //大数作为除数,小数作为被除数,每次递归的除数为上次的被除数,而每次的被除数为上次的余数 int f=0; if(y>0){ f= greatestCommonDivisor(y,x%y); } else if (y==0) { f= x; } return f; } }
测试:
6 8 2