#11871. Smallest Common Multiple / 最小公倍数
Smallest Common Multiple / 最小公倍数
当前没有测试数据。
Problem : Smallest Common Multiple / 最小公倍数
任务总览表
任务名称 | 时间限制 | 内存限制 | 分数 |
---|---|---|---|
Smallest Common Multiple / 最小公倍数 | 1 秒 | 256 MB | 100 分 |
题目描述
给定两个正整数 A
和 B
,请计算它们的 最小公倍数(LCM)。
最小公倍数的定义为:
lcm(A, B) = (A * B) / gcd(A, B)
其中 gcd(A, B)
表示 A 和 B 的最大公约数。
输入格式
输入包含两个正整数 A
和 B
,保证 1 ≤ A, B ≤ 1000000
。
输出格式
输出一个整数,表示 A
和 B
的最小公倍数。
样例输入 1
6 8
样例输出 1
24
解释:
gcd(6, 8) = 2
lcm(6, 8) = (6 * 8) / 2 = 24
样例输入 2
15 20
样例输出 2
60
解释:
gcd(15, 20) = 5
lcm(15, 20) = (15 * 20) / 5 = 60
提示
gcd(A, B)
可以用 辗转相除法(欧几里得算法)在 O(log min(A, B)) 时间内计算。- 由于
A * B
可能很大,计算时应使用long long
避免溢出。
题目分析
目标:计算 A
和 B
的最小公倍数。
思路:
- 先使用 欧几里得算法 计算
gcd(A, B)
。 - 再利用公式
lcm(A, B) = (A * B) / gcd(A, B)
计算最小公倍数。
时间复杂度分析
- **求
gcd(A, B)
**:O(log min(A, B)) - **求
lcm(A, B)
**:O(1) - 总复杂度:O(log min(A, B)),可以高效处理
A, B ≤ 1000000
的情况。
结论
- 该问题主要考察 最大公约数 (gcd) 和 最小公倍数 (lcm) 的计算。
- 利用
lcm(A, B) = (A * B) / gcd(A, B)
可快速求解。 - 计算时应使用 long long 避免溢出。