什么是最小公倍数(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。
🧩 练习题推荐
求 LCM(8, 12) 和 GCD(8, 12)
输入多个正整数(比如 4 个),计算它们的最小公倍数
灯泡 A 每 6 秒闪一次,灯泡 B 每 8 秒闪一次,几秒后会同时闪?
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇: 辗转相除法(欧几里得算法)-野牛程序员教少儿编程
- 下一篇:计数原理-野牛程序员教少儿编程