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

posted @ 2021-12-30 15:33  火热火热7  阅读(118)  评论(0编辑  收藏  举报