#11871. Smallest Common Multiple / 最小公倍数

Smallest Common Multiple / 最小公倍数

当前没有测试数据。

Problem : Smallest Common Multiple / 最小公倍数

任务总览表

任务名称 时间限制 内存限制 分数
Smallest Common Multiple / 最小公倍数 1 秒 256 MB 100 分

题目描述

给定两个正整数 AB,请计算它们的 ​最小公倍数​(LCM)。

最小公倍数的定义为:

lcm(A, B) = (A * B) / gcd(A, B)

其中 gcd(A, B) 表示 A 和 B 的最大公约数。


输入格式

输入包含两个正整数 AB,保证 1 ≤ A, B ≤ 1000000


输出格式

输出一个整数,表示 AB 的最小公倍数。


样例输入 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 避免溢出。

题目分析

目标​:计算 AB 的最小公倍数。 ​思路​:

  • 先使用 欧几里得算法 计算 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 避免溢出。