【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,
取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,
返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。
package case50; import java.util.Scanner; /** * * 【程序6】 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 * 在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数, * 取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0, * 返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 * @author 眼睫毛能扫地 * */ //计算最大公约数 class CalGCD { public int CalGCD(int x, int y) { int t = 0; if (x > y) { t = x; x = y; y = t; } while (x != 0) { if (x == y) return y; else { int k = y % x; y = x; x = k; } } return y; } } public class Case06 { public static void main(String[] args) { int num1 = 0, num2 = 0, gcd = 0, lcm = 0;// gcd 最大公约数 lcm 最小公倍数 Scanner input = new Scanner(System.in); System.out.println("请输入一个数字"); num1 = input.nextInt(); System.out.println("请再输入一个数字"); num2 = input.nextInt(); input.close(); CalGCD GCD = new CalGCD(); gcd = GCD.CalGCD(num1, num2); lcm = num1 * num2 / gcd; System.out.println("最大公约数:" + gcd + " 最小公倍数: " + lcm); } }
来源:https://www.cnblogs.com/YanJieMao/p/12363997.html