import java.util.Scanner; /** * 在循环中,只要除数不等于 0,用较大数除以较小的数,将小的一个数做为下一轮循环的 大数,取得的余数做为下一轮循环的较小的数,如此循环直到较小的数的值为 * 0,返回较大 的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 */ public class Test6 { public static void main(String[] args) { int a, b, m; Scanner s = new Scanner(System.in); System.out.print("键入一个整数: "); a = s.nextInt(); System.out.print("再键入一个整数: "); b = s.nextInt(); Deff cd = new Deff(); m = cd.deff2(a, b); int n = a * b / m; System.out.println("最大公约数: " + m); System.out.println("最小公倍数: " + n); } } class Deff { /** * 循环方式 * @param x * @param y * @return */ public int deff(int x, int y) { int t; if (x < y) { t = x; x = y; y = t; } while (y != 0) { if (x == y) return x; else { int k = x % y; x = y; y = k; } } return x; } /** * 递归方式 * @param x * @param y * @return */ public int deff2(int x, int y) { int t; if (x < y) { t = x; x = y; y = t; } if (y != 0) { if (x == y) return x; else { int k = x % y; x = y; y = k; return deff2(x, y); } } return x; } }