/** * 求最大公约数 * @param p1 * @param p2 * @return */ public static int caluMaxGCD(int p1, int p2) { /* 法1 int result = 1; int min = p1 > p2 ? p2 : p1; for(int i = 2;i <= min;i++) { if(p1 % i == 0 && p2 % i == 0) { result *= i; } } return result;*/ //法2 辗转相除法 // return p1 % p2 == 0 ? p2 : caluMaxGCD(p2, p1 % p2); //法3 辗转相减法 if(p1 == p2) { return p2; } return p1 - p2 > 0 ? caluMaxGCD(p2, p1 - p2) : caluMaxGCD(p1, p2 - p1); } /** * 求最小公倍数 * @param p1 * @param p2 * @return */ public static int caluMinLCD(int p1, int p2) { return p1 * p2 / caluMaxGCD(p1, p2); }