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

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

代码实现:

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
相关文章
|
2月前
|
算法
求最大公约数和最小公倍数的算法
求最大公约数和最小公倍数的算法
32 0
|
2月前
|
算法
辗转相除法求最大公约数
辗转相除法求最大公约数
|
2月前
|
人工智能 Java BI
快速幂讲解
快速幂讲解
29 0
|
11月前
|
算法 Java
欧几里得算法(GCD, 辗转相除法)
欧几里得算法(GCD, 辗转相除法)
|
12月前
快速幂问题
快速幂问题
|
12月前
|
物联网
快速幂
快速幂
63 0
|
算法 Java
快速幂(非递归)
快速幂(非递归)
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数
|
算法
求最大公约数和最小公倍数的几种算法
求最大公约数和最小公倍数的几种算法
97 0
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数