求最大公约数和最小公倍数的做法(Java实现)

简介: 求最大公约数和最小公倍数的做法(Java实现)

              方法 : 求两个数的最大公约数,可以用辗转相除法,同样,也可以用辗转相减法(《九章算术》里也叫更相减损术)。

            一般情况下,辗转相除法的优势在于循环次数少,而辗转相减法的优势在于,对cpu 来说 做减法比除法更快。


            例子:辗转相除法

      较大数除以较小数,若余数不为0,则余数作为除数,上次的除数作为被除数, 
继续相除,直到余数为0,此时的除数即为最大公约数

             import java.util.*;    
            public class Main {
            public static void main(String[] args) {
            Scanner rd = new Scanner(System.in);
            int a=rd.nextInt();
            int b=rd.nextInt();
            int fan=0;          //定义余数
            int a1=a;           // 定义a1保存a的值
            int b1=b;         // 定义b1保存b的值
            if(a<b) {             //始终保持a比b大
        int max=a; 
        a=b;
        b=max;
            }
            while(a%b!=0) {        //运用辗转相除法求出最大公约数
        fan=a%b;                //fan为余数,因为余数不为0
        a=b;                        //除数作为被除数,把b赋值给a
                    b=fan;              //余数作为除数,把fan赋值给b
         }
         System.out.println(b);            //输出最大公约数
        System.out.print(a1*b1/b);          //最小公倍数=输入的那两个值/最大公约数
}
}

            例子:辗转相减法


                 有两整数a和b:
                 ① 若a>b,则a=a-b
                 ② 若a<b,则b=b-a
                 ③ 若a=b,则a(或b)即为两数的最大公约数
                 ④ 若a≠b,则再回去执行①
                 例如求27和15的最大公约数过程为:
                27-15=12( 15>12 ) 15-12=3( 12>3 )
               12-3=9( 9>3 ) 9-3=6( 6>3 )
                6-3=3( 3==3 )
                因此,3即为最大公约数
                
          例子:import java.util.*; 
                    public class Main {
                    public static void main(String[] args) {
                     Scanner rd = new Scanner(System.in);
                      int a=rd.nextInt();
                      int b=rd.nextInt();
                      int c=a*b;
                       while(a!=b) {
                         if(a>b) {
                            a=a-b;
                            }
                           else {
                               b=b-a;
                          }
                             }
                System.out.println(a);      //最大公约数
                 System.out.println(c/a);    //最小公倍数
}
}

作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
【java每日一题,数论】最大公约数,最大质因数,欧拉筛
【java每日一题,数论】最大公约数,最大质因数,欧拉筛
|
Java
Java求最大公约数
Java求最大公约数
80 0
|
Java
Java求最小公倍数
Java求最小公倍数
61 0
|
7月前
|
Java
Java:计算两个数的最大公约数和最小公倍数
Java:计算两个数的最大公约数和最小公倍数
|
7月前
|
人工智能 算法 Java
约数个数(c++, java)
约数个数(c++, java)
38 0
|
7月前
|
存储 Java
Java判断质数、求所有约数【蓝桥杯常用方法】
Java判断质数、求所有约数【蓝桥杯常用方法】
|
Java 数据安全/隐私保护
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
1293 0
JAVA 实现上传图片添加水印(详细版)(上)
|
Java
阶乘约数+猴子分香蕉(蓝桥杯JAVA解法)
阶乘约数+猴子分香蕉(蓝桥杯JAVA解法)
148 0
|
Java
Java经典编程习题100例:第24例:求最小公倍数
Java经典编程习题100例:第24例:求最小公倍数
68 0
|
Java
Java经典编程习题100例:第23例:求最大公约数
Java经典编程习题100例:第23例:求最大公约数
99 0