欢迎访问宙启技术站
智能推送

Java函数实现求取最大公约数和最小公倍数算法

发布时间:2023-06-23 19:05:31

Java是一种流行的编程语言,被广泛应用于软件开发、网站开发、游戏开发等领域。在Java中,实现求取最大公约数和最小公倍数算法非常简单。本文将详细介绍Java函数实现求取最大公约数和最小公倍数算法。

1. 最大公约数

最大公约数,又称最大公因数,是指两个或多个整数共有约数中最大的一个。求取最大公约数的算法有很多种,这里介绍两种最常用的算法:辗转相除法和更相减损术。

辗转相除法:对于两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。如果c=0,则b即为所求最大公约数。

Java代码实现:

public static int gcd1(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd1(b, a % b);
    }
}

更相减损术:对于两个正整数a和b(a>b),它们的最大公约数等于a-b的差和b之间的最大公约数。如果a和b相等,则它们的最大公约数即为它们本身。

Java代码实现:

public static int gcd2(int a, int b) {
    if (a == b) {
        return a;
    } else if (a < b) {
        return gcd2(b - a, a);
    } else {
        return gcd2(a - b, b);
    }
}

2. 最小公倍数

最小公倍数,是指两个或多个整数公有的倍数中,最小的一个公倍数。求取最小公倍数的算法也有很多种,这里介绍两种最常用的算法:辗转相乘法和公式法。

辗转相乘法:对于两个正整数a和b(a>b),它们的最小公倍数等于a和b的积除以它们的最大公约数。

Java代码实现:

public static int lcm1(int a, int b) {
    return a * b / gcd1(a, b);
}

公式法:对于两个正整数a和b(a>b),它们的最小公倍数等于a和b的积除以它们的最大公约数。

Java代码实现:

public static int lcm2(int a, int b) {
    return a * b / gcd2(a, b);
}

以上四个函数可以放在一个类里面,实现求取最大公约数和最小公倍数的功能。

完整代码如下:

public class GcdAndLcm {
    public static void main(String[] args) {
        int a = 60, b = 24;
        System.out.println("gcd1(" + a + ", " + b + ") = " + gcd1(a, b));
        System.out.println("gcd2(" + a + ", " + b + ") = " + gcd2(a, b));
        System.out.println("lcm1(" + a + ", " + b + ") = " + lcm1(a, b));
        System.out.println("lcm2(" + a + ", " + b + ") = " + lcm2(a, b));
    }

    public static int gcd1(int a, int b) {
        if (b == 0) {
            return a;
        } else {
            return gcd1(b, a % b);
        }
    }

    public static int gcd2(int a, int b) {
        if (a == b) {
            return a;
        } else if (a < b) {
            return gcd2(b - a, a);
        } else {
            return gcd2(a - b, b);
        }
    }

    public static int lcm1(int a, int b) {
        return a * b / gcd1(a, b);
    }

    public static int lcm2(int a, int b) {
        return a * b / gcd2(a, b);
    }
}

运行结果:

gcd1(60, 24) = 12
gcd2(60, 24) = 12
lcm1(60, 24) = 120
lcm2(60, 24) = 120

以上就是Java函数实现求取最大公约数和最小公倍数算法的详细介绍。通过本文的学习,相信读者已经掌握了如何在Java中实现求取最大公约数和最小公倍数的算法。