用辗转相除法求两个整数的最大公约数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用辗转相除法求两个整数的最大公约数相关的知识,希望对你有一定的参考价值。

参考技术A 辗转相除法求两个整数的最大公约数的步骤:
一、用一个数除以另一个数,列出第一个算式。注意第一步最好用较大的数除以较小的数;
二、接下来,用上一个算式的除数除以余数;
三、反复做第二步,直到余数为0为止;
四、最后一个算式的除数,就是两个数的最大公约数。
举例如下:
求3854与216的最大公约数:
3854÷216=17……182
216÷182=1……34
182÷34=5……12
34÷12=2……10
12÷10=1……2
10÷2=5……0
得:3854与216的最大公约数是2。

写一个方法,求两个数的最大公约数和最小公倍数。

 

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702;

/*

 * 最大公约数

利用辗转相除法求解两个正整数的最大公约数

在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数。即为最大公约数。

辗转相除法(欧几里得算法)

定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数。最大公约数(greatest common divisor)缩写为gcd

最小公倍数

最小公倍数 = (a * b)/最大公约数

 

 *

 */

import java.util.Scanner;

 

public class MaxMin {

 

 public static void main(String[]args){

        Scanner scanner = new Scanner(System.in);

             System.out.println("作者:王飞,郑州大学,兴唐教育");

        System.out.println("该结构用于求两个数的最大公约数和最小公倍数,欢迎使用");

        System.out.print("请输入第一个整数:\n");

        int a = scanner.nextInt();

        System.out.print("请输入第二个整数:\n");

        int b = scanner.nextInt();

        MaxMin(a,b);

    }

    public static void MaxMin(int a,int b){

        int i = a;

        int j = b;

        int x =0,y =0;

        if(a < b){

            x = b;

            b = a;

            a = x;

        }

        while(b != 0){

            y = a % b;

            a = b;

            b = y;

        }

        //最小公倍数

        int t = i * j / a;

        System.out.println(i+"和"+j+"的最大公约数为:"+ a);

        System.out.println(i+"和"+j+"的最小公倍数为:"+ t);  

    }

}

以上是关于用辗转相除法求两个整数的最大公约数的主要内容,如果未能解决你的问题,请参考以下文章

python求最大公约数和最小公倍数

c语言求最大公约数

用辗转相除法求2个数的最大公约数,怎么做?

谁来解释一下用辗转相除法求最两个数的最大公约数原理

用ARM汇编语言编写程序实现:求寄存器R0和R1中两个整数的最大公约数并将结果存储在R0中

写一个方法,求两个数的最大公约数和最小公倍数。