最大公约数和最小公倍数
来源:互联网 发布:全时云会议mac版下载 编辑:程序博客网 时间:2024/05/05 06:12
1、最大公约数
最大公约数就是两个数共同的因子中,最大的那一个。百度百科上搜到一个算法流程图:
根据上述算法流程图可以写得如下的代码:
int gcs(int a, int b){int r;if(a < b)//确保a比b大{r = a;a = b;b = r;}r = b;while(r != 0){r = a%b;a = b;b = r;}return a;}
思考:两个数的公因子必定要小于或者等于这两个数中较小的那个数,这个是毫无疑问的。(记输入的较大的数为去,较小的数为b)
1、如果较大的数正好能被较小的数整除的话,那么说明最大公约数就是较小的那个整数。
2、如果不能被整除,那么就可以缩小范围求取b 和 a%b 这两个数的公约数了。如此下去,递归的思想就出来了。
Tips: 其实上述过程就是欧几里德算法, 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
gcd(a,b) = gcd(b,a mod b)
int gcd(int a,int b){ return a%b?gcd(b,a%b):b;}当然,上述代码的前提就是a要不小于b;
2、最小公倍数
最小公倍数是两个数公共倍数总最小的那一个数。有公式:
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)× [a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
那么调用上述的最小公约数函数就可以得到最小公倍数了:
int msc(int a,int b){return a*b / gcd(a,b);}
0 0
- 2. 最大公约数和最小公倍数
- 求两数最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最小公倍数和最大公约数
- 最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 最大公约数和最小公倍数算法
- 求最大公约数和最小公倍数
- 最小公倍数和最大公约数
- 最大公约数和最小公倍数
- 求最小公倍数和最大公约数
- 最大公约数和最小公倍数
- 最大公约数和最小公倍数
- 平时的小问题(一直更新渴求交流)
- Item 24: 区分右值引用和universal引用
- Java中final、finally、finalize的区别
- 02.轮播图
- SpringMvc学习心得(二)spring注解配置原理浅析
- 最大公约数和最小公倍数
- 2.C语言数据类型
- 数量
- LeetCode 55 - Jump Game
- JS返回顶部的几种方法
- 游戏开发笔记(十)——移动功能设计
- 试试水
- sql查询相关技术-内连接查询
- unity之旅