思路
A和B的最小公倍数
1、A/B或B/A为整数时,最小公倍数为较大数
2、A/B或B/A都不为整数时
(1)A、B的公因数只有1,最小公倍数为A*B
(2)A、B的最大公因数为C,最小公倍数为C*(A/C)*(B/C)=A*B/C
即最小公倍数=A*B/最大公因数
求解A和B的最大公因数
1、辗转相除法
//求解最大公因数 int a = 27, b = 12; int c; while (b != 0) { c = a % b; a = b; b = c; } System.out.println(a);
2、辗转相减法
大数减小数,直到两数相等时,即为最大公约数。
int a = 27, b = 12; while (a != b) { if (a > b) { a -= b; }else { b -= a; } } System.out.println(a);
方法的定义
代码及解析
public class HomeWork003 { public static int mcm(int a, int b) { //A/B或B/A为整数时,最小公倍数为较大数 if (a % b == 0) { return a; } else if (b % a == 0) { return b; } //A/B或B/A都不为整数时,求解A和B的最大公因数 //最小公倍数=a*b/最大公因数 //辗转相除法 int c; int x = a,y = b; //求解最大公因数过程中,a,b的值会被改变,重新定义两个变量存储a,b的值 while (b != 0) { c = a % b; a = b; b = c; } //此时求解的a时原来的a和b的最大公因数 return x*y/a; /*辗转相减法 while (a != b) { if (a > b) { a -= b; } else { b -= a; } } return x*y/a; */ } //方法的调用 public static void main(String[] args) { int c = mcm(15,20); System.out.println(c); } }
测试结果:60
bingo( •̀ ω •́ )y