当前位置:首页>python>春招学考社团_python专题_zt2_最小公倍数.py

春招学考社团_python专题_zt2_最小公倍数.py

  • 2026-09-08 23:37:07
春招学考社团_python专题_zt2_最小公倍数.py

专题知识点:最小公倍数

最小公倍数(LCM):指两个或多个整数公有的倍数中最小的一个

例子1:使用Python内置math.lcm函数(需Python 3.9及以上版本)

import math  # 导入内置数学库# 定义需要计算的两个数num1 = 12num2 = 18# 调用内置lcm函数计算最小公倍数result = math.lcm(num1, num2)# 打印结果print(f"{num1}和{num2}的最小公倍数是:{result}")  # 输出:36

例子2:暴力破解(枚举法):思路简单

def lcm_enumeration(a, b):    # 处理特殊情况:0和任何数的最小公倍数无数学意义,返回0    if a == 0 or b == 0:        return 0    # 取绝对值,确保能处理负数输入    a, b = abs(a), abs(b)    # 找到两数中的较大值,最小公倍数不会小于较大的数    max_num = max(a, b)    # 从较大值开始无限循环枚举,直到找到符合条件的数    while True:        # 判断当前数是否能同时被a和b整除        if max_num % a == 0 and max_num % b == 0:            # 找到则返回,即为最小公倍数            return max_num        # 未找到则数值加1,继续判断        max_num += 1# 测试枚举法计算最小公倍数num1 = 12num2 = 18result = lcm_enumeration(num1, num2)print(f"{num1}和{num2}的最小公倍数是:{result}")#输出 12和18的最小公倍数是:36

例子3:通过最大公约数计算最小公倍数(最优解法)

#两数相乘除以两数的最大公约数.import mathdef lcm_by_gcd(a, b):    # 处理0的特殊情况:0和任何数的最小公倍数无意义,返回0    if a == 0 or b == 0:        return 0    # 步骤1:计算两数的最大公约数(GCD)    gcd_value = math.gcd(abs(a), abs(b))    # 步骤2:根据公式计算最小公倍数(LCM),取绝对值避免负数影响    lcm_value = abs(a * b) // gcd_value  # 用整除//保证结果是整数    return lcm_value# 测试示例num1 = 12num2 = 18result = lcm_by_gcd(num1, num2)print(f"{num1}和{num2}的最小公倍数是:{result}")  # 输出:36

知识总结

内置函数法:math.lcm() 是 Python 3.9 + 新增的内置函数,简洁高效,实际开发优先使用,但需注意版本兼容性。

枚举法:核心逻辑是从两数的较大值开始递增枚举,找到第一个能同时被两数整除的数,思路简单但效率较低,兼容所有 Python 版本。

计算前需处理0 和负数:0 无最小公倍数意义,负数需先取绝对值再计算。

最新文章

随机文章