编写程序:从键盘输入两个正整数m和n,编写程序求其最大公约数和最小公倍数。(提 示:求最大公约数可以使用辗转相除法,即通过不断地把大数除以小数,直到两数相等为止, 最后一次的除数即为最大公约数。最小公倍数-输入两个整数的乘积 //最大公约数。)
时间: 2024-09-18 17:02:56 浏览: 86
c代码-输入两个正整数m和n,求其最大公约数和最小公倍数。
当你需要编写一个程序来计算两个正整数m和n的最大公约数(GCD)和最小公倍数(LCM),你可以采用以下步骤:
1. **输入验证**:
首先,你需要从用户那里获取这两个正整数m和n。确保它们确实是正整数,可以用循环接收输入,并在输入无效时提示用户重新输入。
2. **计算最大公约数 (GCD)**:
使用欧几里得算法(辗转相除法)来找到两个数的最大公约数。对于两个数a和b(假设a >= b),如果b为0,则a就是gcd;否则,gcd等于b和a mod b(a除以b的余数)。
```python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
```
3. **计算最小公倍数 (LCM)**:
最小公倍数可以通过最大公约数和两个数的乘积得到,公式为 `LCM(a, b) = abs(a * b) / GCD(a, b)`,因为两个数的乘积正好包含了它们所有的公约数次数。
```python
def lcm(a, b):
return abs(a * b) // gcd(a, b)
```
4. **输出结果**:
计算完成后,打印出最大公约数和最小公倍数的结果。
完整代码示例(Python):
```python
def get_input():
while True:
try:
m = int(input("请输入第一个正整数m:"))
n = int(input("请输入第二个正整数n:"))
if m > 0 and n > 0:
break
else:
print("输入错误,请输入正整数。")
except ValueError:
print("输入错误,请输入整数。")
gcd_value = gcd(m, n)
lcm_value = lcm(m, n)
print(f"最大公约数 (GCD): {gcd_value}")
print(f"最小公倍数 (LCM): {lcm_value}")
# 相关问题:
阅读全文