当前位置:首页算法 > 正文

什么是最小公倍数(LCM)?-野牛程序员讲少儿编程

作者:野牛程序员:2025-05-10 12:44:54算法阅读 1987
什么是最小公倍数(LCM)?-野牛程序员讲少儿编程

🌟 什么是最小公倍数(LCM)?

定义:
最小公倍数是指同时是两个(或多个)整数的倍数中最小的那个正整数

🧸 举个小例子:

  • 4 的倍数有:4, 8, 12, 16, 20, 24...

  • 6 的倍数有:6, 12, 18, 24, 30...

🔍 同时是它们的倍数的有:12、24...
✅ 所以:LCM(4, 6) = 12


🧮 最小公倍数怎么求?

✅ 方法一:枚举法(不推荐)

依次从 max(a, b) 开始尝试,直到找到第一个能被 a 和 b 整除的数。太慢,不推荐!


✅ 方法二:用最大公约数来求最小公倍数(推荐!)

公式:

lcm(a, b) = (a × b) ÷ gcd(a, b)

因为:

  • a × b 是所有公倍数中的一个;

  • 除以 gcd(a, b) 就能找到最小的公倍数。


💡 生活中的小例子

情景背后数学
两个人敲鼓节奏什么时候同时敲?LCM
两盏灯闪烁间隔什么时候一起亮?LCM
学校排课两科课程都三天一节?LCM


💻 C++ 完整代码

#include <iostream>
using namespace std;

// 计算最大公约数(辗转相除法)
int gcd(int a, int b) {
    while (b != 0) {
        int temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}

// 计算最小公倍数
int lcm(int a, int b) {
    return a * b / gcd(a, b);  // 利用公式:lcm = a × b ÷ gcd(a, b)
}

int main() {
    int x, y;
    cout << "请输入两个正整数:";
    cin >> x >> y;

    cout << "最大公约数是:" << gcd(x, y) << endl;
    cout << "最小公倍数是:" << lcm(x, y) << endl;

    return 0;
}

🧠 拓展思考

  • 如果 a 和 b 是互质数(gcd = 1)怎么办?
    那么 LCM(a, b) = a × b

  • 可以推广到多个数吗?
    是的,可以按顺序两两求出 lcm。


🧩 练习题推荐

  1. 求 LCM(8, 12) 和 GCD(8, 12)

  2. 输入多个正整数(比如 4 个),计算它们的最小公倍数

  3. 灯泡 A 每 6 秒闪一次,灯泡 B 每 8 秒闪一次,几秒后会同时闪?


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 什么是最小公倍数(LCM)?-野牛程序员讲少儿编程
  • 相关推荐

    最新推荐

    热门点击