辗转相除法_欧几里得算法_java的实现(求最大公约数)

简介: 辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法。 当然也可以求最小公倍数。 算法描述   两个数a,b的最大公约数记为GCD(a,b)。a,b的最大公约数是两个数的公共素因子的乘积。
+关注继续查看

辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法。
当然也可以求最小公倍数。

算法描述

  两个数a,b的最大公约数记为GCD(a,b)。a,b的最大公约数是两个数的公共素因子的乘积。如462可以分解成2 × 3 × 7 × 11;1071可以分解成3 × 3 × 7 × 17。462和1071的最大公约数等于它们共有的素因数的乘积3 × 7 = 21。如果两数没有公共的素因数,那么它们的最大公约数是1,也即这两个数互素,即GCD(a,b)=1。另g=GCD(a,b),则a=mg, b=ng,其中m,n均为正整数。由上述分析可知,m,n互素。因为m,n没有公共素因子,GCD(m,n)=1。
  辗转相除法是一种递归算法。

算法实现:
递归版本:

    private static int gac(int a, int b) {
        if(a<b){
            swap(a,b);
        }
        if(b==0)
            return a;
        else
            return gcd(b,a%b);

    }

    private static void swap(int a, int b) {
        a=a^b;
        b=a^b;
        a=a^b;
    }

循环版本:

private static int gac(int a, int b) {
        if(a<b){
            swap(a,b);
        }
        while(b!=0){
            int c = a%b;
            a=b;
            b=c;
        }
        return a;
    }

    private static void swap(int a, int b) {
        a=a^b;
        b=a^b;
        a=a^b;
    }

2个数a,b;已知最大公约数为n;
最小公倍数=a*(b/n);

目录
相关文章
|
8月前
|
分布式计算 Java Hadoop
Java实现单词计数MapReduce
本文分享实现单词计数MapReduce的方法
239 0
|
8月前
|
Java 数据安全/隐私保护
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
578 0
JAVA 实现上传图片添加水印(详细版)(上)
|
8月前
|
Java
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
394 0
|
8月前
|
存储 Java
Java实现图书管理系统
本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
265 0
Java实现图书管理系统
|
8月前
|
Java Windows Spring
java实现spring boot项目启动时,重启Windows进程
java实现spring boot项目启动时,重启Windows进程
420 0
|
8月前
|
数据可视化 Java
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面
333 0
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
|
8月前
|
网络协议 Java
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
ip地址的分类: 1、ipv4、ipv6 127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿 2011年就用尽了。
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
|
8月前
|
数据可视化 Java 容器
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step
171 0
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
|
8月前
|
Java
Java实现拼图小游戏(7)—— 作弊码和判断胜利
当我们好不容易把拼图复原了,但是一点提示也没有,完全看不出来是成功了,那么我们就需要有判断胜利的功能去弹出“成功”类的图片,以便于玩家选择是重新开始还是退出小游戏
160 0
Java实现拼图小游戏(7)—— 作弊码和判断胜利
|
8月前
|
Java
Java实现拼图小游戏(7)——查看完整图片(键盘监听实例2)
由于在移动和图片中我们已经添加了键盘监听,也继承了键盘监听的接口,那么我们只需要在重写方法内输入我们的代码即可
127 0
相关产品
机器翻译
推荐文章
更多