Java算法之求两个数的最大公约数与最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数。
package cn.xuzihui; public class Test { /** * @author xuzh * 欧几里得算术(辗转相除法) * 求两个数的最大公约数,每次用较大的数除较小数求余 * 余数不为0,则让较大数等于较小数,较小书等于余数,继续相除求余 * 当余数为0时,则这时的最小数为这两个数的最大公约数 */ public static void main(String args[]) { Test t = new Test(); System.out.println("输入的两个数的最大公约数为:"+t.gy(12, 18)); System.out.println("输入的两个数的最小公倍数为:"+t.gb(12, 18)); } //求最大公约数的方法 public int gy(int a, int b) { while(b != 0) { int temp = a % b; a = b; b = temp; } return a; } /** * 由于两个数的成绩等于它们的最大公约数×最小公倍数,即(a,b)×[a,b]=a*b, * 因此求出最大公约数后,自然就得出它们的最小公倍数 */ public int gb(int a, int b) { int m = (a*b) / gy(a, b); return m; } }
输出结果:
输入的两个数的最大公约数为:6 输入的两个数的最小公倍数为:36