辗转相除法_欧几里得算法_java的实现(求最大公约数)
来源:互联网 发布:macos mysql 安装配置 编辑:程序博客网 时间:2024/06/10 21:52
辗转相除法,又被称为欧几里德(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);
0 0
- 辗转相除法_欧几里得算法_java的实现(求最大公约数)
- 欧几里得算法 --- 辗转相除法求最大公约数
- C语言辗转相除法求最大公约数(欧几里得算法)
- 欧几里得算法(辗转相除法)求最大公约数
- 辗转相除法(欧几里得)求最大公约数和最小公倍数
- CFF 1028 判断互质(求最大公约数),欧几里得算法,辗转相除法
- JAVA实现辗转相除法 欧几里得算法求逆
- C语言 求两个数的最大公约数 (算法)--辗转相减法、辗转相除法
- 欧几里德算法(辗转相除法) 求最大公约数
- 求最大公约数-辗转相除法-欧几里德算法
- 关于求最大公约数经典算法---辗转相除法的思考
- 辗转相除法求最大公约数Java实现
- 欧几里得求最大公约数算法(辗转相除)
- 欧几里德算法(辗转相除法)求最大公约数和最小公倍数
- C++算法 - 辗转相除法(求最大公约数)
- C语言辗转相除法(欧几里德算法)求最大公约数
- 求最大公约数:欧几里德算法(即 辗转相除法 )
- 算法学习 - 欧几里得算法(辗转相除法)(c++实现)
- Cortex-M4之FPU
- docker 网络4种模式
- opencv1.0中的常用函数
- JSON是什么?JSON和JS对象的区别和JSON的基本应用
- ListView分页的Demo
- 辗转相除法_欧几里得算法_java的实现(求最大公约数)
- Linux Shell 变量自加
- 数据结构与算法笔记(一)单链表
- 排序算法-java
- 3123: [Sdoi2013]森林
- windows-appium环境搭建
- Mysql占cpu近100%解决思路
- C++/C中指针详解
- Mysql 创建表外键