编写函数实现最小公倍数算法,通过函数调用代码实现求两个数的最小公倍数
def lcm(a, b):
"""
求两个数的最小公倍数
"""
# 求最大公约数
gcd = lambda x, y: x if y == 0 else gcd(y, x % y)
# 求最小公倍数
return a * b // gcd(a, b)
不知道你这个问题是否已经解决, 如果还没有解决的话:每年到大三暑期实习季,学校基本会与很多企业联合开办几场暑期实习招聘专场,以便大学生们获得实习机会,同时学校官网、公众号上也会不定时推送各类公司暑期实习招聘信息,班级群内辅导员也会发布一些靠谱的实习机会,这些暑期实习机会都是免费且真实可靠的。如果你也有暑期实习的需求,建议关注下学校官网与公众号,或者咨询下就业办老师,会获得很多暑期实习机会。
我可以编写这个求两个数的最小公倍数的函数,具体步骤如下:
定义一个函数 lcm(x, y),表示求x和y的最小公倍数。
在函数内部,先判断输入的x和y是否都为正整数,并且数值范围在1到1000之间,若不符合条件则输出错误提示信息并返回None。
使用辗转相除法,求出x和y的最大公约数gcd。
利用最大公约数的性质,即x*y = gcd(x, y) * lcm(x, y),推导出lcm(x, y) = x * y / gcd(x, y)。
返回lcm(x, y)的值。
代码如下所示:
def lcm(x, y):
# 判断输入是否合法
if not isinstance(x, int) or not isinstance(y, int):
print("输入必须是整数")
return None
if x <= 0 or x > 1000 or y <= 0 or y > 1000:
print("输入必须在1到1000之间")
return None
# 求最大公约数
a, b = x, y
while b:
a, b = b, a % b
gcd = a
# 求最小公倍数
lcm = x * y // gcd
return lcm
测试代码如下所示:
print(lcm(3, 5)) # 15
print(lcm(12, 16)) # 48
print(lcm(20, 30)) # 60
print(lcm(100, 200)) # 200
print(lcm(3.5, 5)) # 输入必须是整数,返回None
print(lcm(2000, 3000)) # 输入必须在1到1000之间,返回None