编写Python代码,条件如下“编写最大公约数函数maxdivider与最小公倍数函数minmultiplier,输入2个正整数(需要进行判断是否是正整数,若不是,则要求重新输入),通过函数调用输出它们的最大公约数和最小公倍数并打印输出。”
时间: 2024-11-09 15:21:08 浏览: 13
首先,我们需要编写两个函数:`gcd`(Greatest Common Divisor,最大公约数)和`lcm`(Least Common Multiple,最小公倍数)。然后,在主程序中接收用户输入的两个数,检查是否为正整数,如果不是则提示用户重新输入。以下是完整的Python代码:
```python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def lcm(a, b):
# 使用最大公约数计算最小公倍数
return (a * b) // gcd(a, b)
def input_and_validate():
while True:
try:
num1 = int(input("请输入第一个正整数: "))
num2 = int(input("请输入第二个正整数: "))
if num1 > 0 and num2 > 0:
return num1, num2
else:
print("输入错误,请确保输入的是正整数。")
except ValueError:
print("输入无效,请确保输入的是整数。")
num1, num2 = input_and_validate()
result_gcd = gcd(num1, num2)
result_lcm = lcm(num1, num2)
print(f"这两个数的最大公约数是: {result_gcd}")
print(f"这两个数的最小公倍数是: {result_lcm}")
# 相关问题--
1. 在这个程序中为什么要用try-except结构?
2. 如何进一步优化gcd函数以提高效率?
3. lcm函数还可以用其他方法实现吗?
```
在这个程序中,用户可以多次尝试输入直到输入满足条件为止。一旦得到正整数,就会调用`gcd`和`lcm`函数计算结果并显示出来。
阅读全文