问题描述(来源于LeetCode)

给定一个正整数 n,返回 2 和 n 的最小公倍数(正整数)。

解题思路分析

问题本质

求两个数的最小公倍数(LCM)问题,但其中一个数是固定的2。

数学原理

  • 两个数的最小公倍数 = (a × b) ÷ 最大公约数(GCD)

  • 对于数字2和任意整数n:

    • 如果n是偶数,2和n的最大公约数是2,最小公倍数是n

    • 如果n是奇数,2和n的最大公约数是1,最小公倍数是2 × n

代码实现

方法一:条件判断法

1
2
3
4
5
6
class Solution:
def smallestEvenMultiple(self, n: int) -> int:
if n % 2 == 0:
return n
else:
return 2 * n

算法详解

通过判断n的奇偶性来决定结果:

  • 偶数情况:n能被2整除,2和n的最小公倍数就是n本身

  • 奇数情况:n不能被2整除,2和n的最小公倍数是2 × n

复杂度分析

  • 时间复杂度: O(1) - 一次模运算和条件判断

  • 空间复杂度:O(1) - 常数空间

数学证明

定理证明

对于任意正整数n:

  1. 当n为偶数时,n = 2k (k∈N⁺)

    • GCD(2, n) = 2

    • LCM(2, n) = (2 × n) ÷ 2 = n

  2. 当n为奇数时,n = 2k + 1 (k∈N)

    • GCD(2, n) = 1

    • LCM(2, n) = (2 × n) ÷ 1 = 2n

测试用例

测试用例 输入n 预期输出 说明
1 5 10 奇数情况
2 6 6 偶数情况
3 1 2 最小奇数
4 2 2 最小偶数
5 100 100 较大偶数

边界情况考虑

  1. n = 1(最小奇数)

    • 输出:2
  2. n = 2(最小偶数)

    • 输出:2
  3. 大数情况

    • n = 10⁹(奇数):输出2 × 10⁹

    • n = 10⁹(偶数):输出10⁹

扩展应用

相关概念

  1. 最大公约数(GCD)

  2. 最小公倍数(LCM)

  3. 质数与合数

实际应用场景

  • 周期性任务调度

  • 信号处理的采样频率

  • 工程中的齿轮传动比计算

总结

这道题目虽然简单,但涉及了数论中的基本概念:

  1. 奇偶性判断:使用模运算

  2. 最小公倍数:理解LCM的计算原理

  3. 条件逻辑:根据不同情况采用不同策略

解题的关键在于发现数字2的特殊性,从而简化计算。这种方法体现了利用问题特性优化解的重要思想。