Java 求最大公约数和最小公倍数
Java 求最大公约数和最小公倍数
The greatest common divisor
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数,几个整数中公有的约数,叫做这几个数的公约数,其中最大的一个,叫做这几个数的最大公约数
以下代码使用欧几里得算法
两个数的乘积等于这两个数的最大公约数与最小公倍数的积
使用循环
public static int getGCD(int a, int b) {
    if (a < 0 || b < 0) {
        return -1; //不考虑负数的约数
    }
  
    if (b == 0) {
        return a;
    }
  
    while (a % b != 0) {
        int temp = a % b;
        a = b;
        b = temp;
    }
    return b;
}
使用递归
public static int getGCD(int a, int b) {
    if (a < 0 || b < 0) {
        return -1; //不考虑负数的约数
    }
  
    if (b == 0) {
        return a;
    }
    return a % b == 0 ? b : getGCD(b, a % b);
}
The lowest common multiple
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数
public static int getLCM(int a, int b) {
		for (int i = a;; i = i + a) {
			if (i % b == 0) {
				return i;
			}
		}
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号