1. 程式人生 > 其它 >Java 求最大公約數和最小公倍數

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;
			}
		}
}