首页 > 编程语言 >Java 求两个数的最大公约数和最小公倍数(理解原理 > 背诵)

Java 求两个数的最大公约数和最小公倍数(理解原理 > 背诵)

时间:2023-10-25 18:04:00浏览次数:45  
标签:Java num1 num2 公倍数 最小 int 最大公约数


解题需知原理,背诵来的知识只能支撑一时。

为什么反复执行 a % b ,即可得到最大公约数?(设定前提是a > b)

其中的数学原理就是:a 和 b 的最大公约数 完全等同于 b 和 a%b 的最大公约数,证明在这里:

辗转相除法求解最大公约数和最小公倍数的数学原理 - 知乎

求得最大公约数 d 以后,比方说:

a = x * d

b = y * d

x 和 y 之间是不可能有公约数的,所以 a 和 b 的最小公倍数就是 x * y * d,也就是 a * b / d。

class HelloJava {
    public static void main(String[] args) {

        int num1 = 12;
        int num2 = 20;
        int a = num1 > num2? num1 : num2;
        int b = num1 > num2? num2 : num1;
        while(b != 0){
            int temp = a % b;
            a = b;
            b = temp;
        }
        System.out.println("最大公约数是 " + a);  // 最大公约数是 4
        System.out.println("最小公倍数是 " + num1 * num2 / a);  // 最小公倍数是 60
    }
}

标签:Java,num1,num2,公倍数,最小,int,最大公约数
From: https://blog.51cto.com/u_13946099/8023607

相关文章

  • Java基础20问(1-5)
    1.Java面向对象和面试过程的区别?面向过程是将一个问题拆解成几个步骤,依次实现每一个步骤,比如实现一个冒泡排序的算法,是为了解决某个非常具体的问题。而面向对象也是将一个问题拆解成几个步骤,但是先不去实现,而是根据这些步骤抽象出若干个类,每个类都有属性和方法,咱配合着把问题解决。......
  • Java基础20问(6-10)
    6.Java接口和抽象类的区别?不同点1.接口在Java8之前不能写方法实现逻辑,Java8及以后的版本,可以用default关键字写方法的实现。2.接口中方法都是public的,public可以省略,而抽象类没有这个限制。3.接口用interface关键字,抽象类用abstractclass来声明。相同点:接口和抽象类都不能直接new......
  • java基本语法
    1.注释 2. ......
  • 查看Java class文件元信息
    命令javap-v/com/pany/Hello.class输出:D:\lab>javap-vLibEnvMap.classClassfile/D:/lab/LibEnvMap.classLastmodified2023年10月25日;size1442bytesSHA-256checksum163a912c8adb9511d630c71483f134b2583e87a66ad8e46ace4fa30656e5af7eCompiledfrom&q......
  • Java 方法 01~06
    Java方法01~061.什么方法?方法概念:语句的集合;方法的命名规则:驼峰法则publicstaticintadd(inta,intb){returna+b;}//static类方法标识符//int返回值类型//inta,intb形参2.方法的定义和调用​ 定义要素:修饰符;返回值类型;方法名;参数类型;方法体......
  • 单词接龙(JAVA)
    classSolution{Map<String,Integer>wordId=newHashMap<String,Integer>();//哈希图,用于广度优先搜索List<List<Integer>>edge=newArrayList<List<Integer>>();//哈希图的邻接表,嵌套的两个一维数组组成的二维数组,......
  • Java基础 序列化流和反序列化流的 三个使用细节
    细节一:如果说一个类实现了Serializable接口,表示这个类的对象是可被序列化的,Java底层会根据这个类里面所有的内容进行计算,计算出一个long类型的序列号(或版本号)。假设计算出来的版本号是1,当我创建了一个这个类的对象的时候,在对象里面就包含了版本号1,用序列化流写到本地文......
  • 基于html5+javascript技术开发的房贷利率计算器,买房的码农们戳进来
    房贷计算器是一款专为购房者设计的实用工具应用,其主要功能是帮助用户详细计算房贷的还款金额、利息以及还款计划等。通过这款软件,用户可以更加便捷地了解到自己的还款情况和计划,从而更好地规划自己的财务。下面将对房贷计算器进行详细的介绍。体验地址房贷计算器体验地址关键......
  • JavaScript树型数据与一维数组相互转换方式
     /***@description一维数组转树形数据**/exportconstarrToTree=(data=[],conf={})=>(((data,{id='id',parentId='parentId',children='children'})=>{letresult=[]if(!Array.isArray(data)){r......
  • Java基础 序列化流、反序列化流
     序列化流是高级流,也是用来包装基本流的序列化流属于字节流的一种,负责输出数据;反序列化流负责输入数据 序列化流可以把Java中的对象写到本地文件中。但是写到文件中的数据我们看不懂,可以通过反序列化流把数据正确读取出来序列化流也叫对象操作输出流  序列......