蓝桥杯备考随手记: 求最大公约数

1. 最大公约数的定义

最大公约数指的是两个或多个整数中能同时整除它们的最大正整数。最大公约数也可以被称为最大公因数、最大公因子或者简称为GCD(Greatest Common Divisor)。例如,对于整数12和18来说,它们的最大公约数是6。

2. 如何求最大公约数

有几种常见的方法可以求解最大公约数:

  1. 辗转相除法(欧几里得算法):用较大数除以较小数,得到余数,再用较小数除以余数,再得到新的余数,一直重复这个过程,直到余数为0。此时除数就是最大公约数。例如,求解24和36的最大公约数:

    • 36 ÷ 24 = 1余12
    • 24 ÷ 12 = 2余0 因此,最大公约数为12。
  2. 因数分解法:将两个数分别进行质因数分解,然后找到它们的公共质因数,再将这些质因数相乘即可得到最大公约数。例如,求解18和24的最大公约数:

    • 18 = 2 × 3²
    • 24 = 2³ × 3 公共质因数为2 × 3 = 6,因此,最大公约数为6。
  3. 更相减损法:较大数减去较小数,得到差值,再将较小数与差值做相减,一直重复这个过程,直到两个数相等。相等时的数即为最大公约数。例如,求解36和48的最大公约数:

    • 48 - 36 = 12
    • 36 - 12 = 24
    • 24 - 12 = 12 因此,最大公约数为12。

以上是常用的三种方法,根据具体情况可以选择适合的方法进行求解。

3. 代码实现

以下是使用Java代码实现最大公约数的三种方法:

  1. 辗转相除法:

    java 复制代码
    public static int gcdByEuclidean(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }
  2. 因式分解法:

    java 复制代码
    public static int gcdByPrimeFactorization(int a, int b) {
        int gcd = 1;
        for (int i = 2; i <= Math.min(a, b); i++) {
            while (a % i == 0 && b % i == 0) {
                gcd *= i;
                a /= i;
                b /= i;
            }
        }
        return gcd;
    }
  3. 更相减损法:

    java 复制代码
    public static int gcdBySubtraction(int a, int b) {
        while (a != b) {
            if (a > b) {
                a = a - b;
            } else {
                b = b - a;
            }
        }
        return a;
    }

这三种方法各有优缺点,具体使用哪种方法取决于具体的应用场景和数值范围。辗转相除法是最常用的方法,具有较高的效率和广泛的适用性。

相关推荐
Pota-to成长日记9 分钟前
代码解析:基于时间轴(Timeline)的博客分页查询功能
java
塔能物联运维31 分钟前
物联网设备运维中的自动化合规性检查与策略执行机制
java·运维·物联网·struts·自动化
不爱编程的小九九32 分钟前
小九源码-springboot099-基于Springboot的本科实践教学管理系统
java·spring boot·后端
雨夜之寂40 分钟前
第一章-第二节-Cursor IDE与MCP集成.md
java·后端·架构
泡泡鱼(敲代码中)1 小时前
数据结构(顺序表和链表)
笔记·学习·算法
即将头秃的程序媛1 小时前
Sa-Token
java
大G的笔记本1 小时前
Spring IOC和AOP
java·后端·spring
武子康1 小时前
Java-155 MongoDB Spring Boot 连接实战 | Template vs Repository(含索引与常见坑)
java·数据库·spring boot·后端·mongodb·系统架构·nosql
武子康1 小时前
Java-157 MongoDB 存储引擎 WiredTiger vs InMemory:何时用、怎么配、如何验证 mongod.conf
java·数据库·sql·mongodb·性能优化·系统架构·nosql
br456vv1 小时前
Adobe Dimension 2025 (3D可视化设计神器) 解锁版
java·adobe·工具