求两数的最大公约数和最小公倍数的方法
来源:互联网 发布:软件可用性 编辑:程序博客网 时间:2024/06/06 05:21
先说求最小公倍数的方法,很简单:
记a,b的最大公约数为 ma = (a, b),最小公倍数mi = [a, b]。
则 mi = a * b / ma;
原理简单: mi = ( a / ma ) * ( b / ma ) * ma = a * b / ma。
最大公约数求法较多 参阅 百度百科 “最大公约数” https://baike.baidu.com/item/最大公约数/869308?fr=aladdin
主要说其中的两种 1 辗转相除法 2 更损相减术
1 辗转相除法
方法: 求 a b两数的最大公约数,
1) 令 k = a%b,若k=0,则最大公约数为b
2) 否则,令 a = b, b= k;再进行1)
其原理为:
因为 ma = (a, b); 不妨设 a >= b, 则有 m*a + n*b 能被ma整除,即 (m*a + n*b) % ma =0
若 a / b = s ...... y , 即 a%b=y,则有 a = b*s + y ; 移项可得:
y = a - b*s; 又因为 (m*a + n*b) % ma =0, 则有 y % ma = 0;
即 (a, b) = (b, y);
2 更损相减术
方法:
1) 若a,b 两数均为偶数,则均除以2以约简,直到两数中至少有一数不为偶数
2)用大数减去小数,即 a - b = c, 并 更新值 a = b, b = c (b>=c) , 重复相减,c=0; 则 最大公约数为当前的b(或a)值。
原理:
不妨设a > b,设 ma = ( a, b ), a = m * ma,b = n * ma;则有m > n,
经过一次相减, c = a - b = (m - n)*ma;
若m - n >= n; 此时更新a = (m - n)*ma; b = n*ma,
若m - n < n; 此时更新a = n*ma; b = (m - n)*ma,
显然经过若干次相减后 a - b = ma。
- 求两数的最大公约数和最小公倍数的方法
- 求两数的最大公约数和最小公倍数
- 求最大公约数和最小公倍数的方法
- 求最小公倍数和最大公约数的方法
- 求最大公约数和最小公倍数的方法
- 最大公约数和最小公倍数的关系
- 最大公约数和最小公倍数的定义
- 最小公倍数和最大公约数的求解
- 最大公约数和最小公倍数的计算
- 最大公约数和最小公倍数的原理
- 最大公约数和最小公倍数的问题
- 最大公约数和最小公倍数的求解
- 最大公约数和最小公倍数的总结
- 一种很少见的求最大公约数和最小公倍数的方法
- 最小公倍数和最大公约数方法
- 求两个数最大公约数和最小公倍数的简便方法
- java中求最大公约数和最小公倍数的方法
- 求两数的最大公约数与最小公倍数
- LR中判断HTTP返回状态码
- 策略模式
- 初识--AOP
- python 三种方法删除列表里所有空格项
- mybatis+springmvc框架反射获取dao类
- 求两数的最大公约数和最小公倍数的方法
- solr笔记(二)
- 《深度学习Ng》课程学习笔记01week1——深度学习概论
- OSI七层协议
- HAOI2015[BZOJ2110] T1 【树形DP】
- github 中的 watch、star、fork
- 堆排序
- 关于Crash和ANR以及应用保活
- 来到博客的第一天