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

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

代码实现:

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月前
|
算法
求最大公约数和最小公倍数的算法
求最大公约数和最小公倍数的算法
75 0
|
21天前
辗转相除法
【10月更文挑战第21天】辗转相除法。
28 2
|
2月前
|
移动开发 算法
求其最大公约数和最小公倍数
求其最大公约数和最小公倍数。
69 5
|
6月前
|
算法
辗转相除法求最大公约数
辗转相除法求最大公约数
|
算法 搜索推荐 程序员
欧几里得算法
欧几里得算法(Euclidean algorithm)是一种计算两个数的最大公约数(Greatest Common Divisor,简称 GCD)的算法。欧几里得算法的基本思想是通过辗转相除的方式,将两个数逐步缩小,直到它们的公约数为止。欧几里得算法的时间复杂度为 O(log n)。
226 1
|
算法 Java
欧几里得算法(GCD, 辗转相除法)
欧几里得算法(GCD, 辗转相除法)
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数
|
算法
求最大公约数和最小公倍数的几种算法
求最大公约数和最小公倍数的几种算法
148 0
辗转相除法 求最大公约数
辗转相除法 求最大公约数
817 0