Java 求两个数的最大公约数和最小公倍数(理解原理 > 背诵)
  DosddciaWHNX 2023年11月02日 38 0


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

为什么反复执行 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
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
DosddciaWHNX