辗转相除法求最大公约数(使用递归实现)~

简介: 辗转相除法求最大公约数(使用递归实现)~

代码实现:

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
相关文章
|
6月前
|
算法
求最大公约数和最小公倍数的算法
求最大公约数和最小公倍数的算法
74 0
|
14天前
辗转相除法
【10月更文挑战第21天】辗转相除法。
24 2
|
5月前
|
JavaScript 前端开发 Java
最大公约数
【6月更文挑战第23天】
55 4
|
6月前
|
算法
辗转相除法求最大公约数
辗转相除法求最大公约数
|
6月前
|
算法
更相减损术求最大公约数
更相减损术求最大公约数
wustojc5002最大公约数
wustojc5002最大公约数
49 0
|
算法 Java
欧几里得算法(GCD, 辗转相除法)
欧几里得算法(GCD, 辗转相除法)
求最大公约数
求最大公约数
64 0
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数