最大公约数,最小公倍数
来源:互联网 发布:乌克兰的军事实力 知乎 编辑:程序博客网 时间:2024/06/05 07:18
首先记录两种求最大公约数的方法如下
1.辗转相除法(欧几里得算法)
具体的数学证明可以自行百度,博主数学不好,觉得知道这几个点就够了
前提是a>=b,if a%b == 0 then gcd(a,b) == b
else if a = bn+r then gcd(a,b) = gcd(b,r)...,那我们的任务就是在程序中判断两个参数之间能够整除即可
int gcd(int a,int b){ int tmp; if(a < b){//确保前提a>=b tmp = a; a = b; b = tmp; } tmp = 1; while(tmp != 0){ tmp = a % b; if(tmp){ a = b; b = tmp; } } return b;}2.更相减损法
更相减损实际上是辗转相除思想的另一种实现,但是运算方法靠的是减法,因此它的效率特别是在两个参数
相差较大的时候,就会显得慢一些。
int gcd(int a,int b){ int t = 1,tmp; while(true){ if(a%2 == 0 && b%2 == 0){ t *= 2; a /= 2; b /= 2; } if(a < b){//确保前提a>=b tmp = a; a = b; b = tmp; } tmp = a - b; if(tmp == b){ return b*t; }else{ a = tmp; } }}
相比之下如果求两个数的最小公倍数的话,也是要借助最大公约数的
lcd(a,b) = a*b/gcd(a,b);
这里就不再给出程序以及证明了。。。
0 0
- 最大公约数,最小公倍数
- 最大公约数最小公倍数
- 最大公约数 最小公倍数
- 最小公倍数,最大公约数
- 最大公约数 最小公倍数、、、
- 最大公约数、最小公倍数
- 最大公约数、最小公倍数
- 最大公约数 最小公倍数
- 最大公约数、最小公倍数
- 最大公约数&&最小公倍数
- 最大公约数,最小公倍数
- 最大公约数 最小公倍数
- 最大公约数 最小公倍数
- 最大公约数: 最小公倍数
- 最大公约数,最小公倍数
- 最大公约数,最小公倍数
- 最大公约数,最小公倍数
- 最小公倍数,最大公约数
- C语言string家族函数使用说明及范例
- M_BUS总线技术概述
- MongoDB小结27 - 聚合管道【$project】
- 7.4 E2D3
- JAVA连接各类数据库及连接EXCEL代码
- 最大公约数,最小公倍数
- 提高效率的 Android Studio 技巧汇总
- Log4net
- 每天一点python——八大排序算法的Python实现
- Map 和 Reduce函数
- libpng Simplified API 解説
- fragment中的空指针问题
- WebX实践指南_持久化(三)
- Move Zeroes