输入两个正整数,求其最大公约数和最小公倍数
时间: 2023-11-03 11:06:14 浏览: 74
可以使用辗转相除法求最大公约数,也可以使用质因数分解法。以下是两种方法的Python代码实现。
方法一:辗转相除法
```python
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
# 辗转相除法
while b != 0:
a, b = b, a % b
# 最大公约数为a,最小公倍数为a*b//a
print("最大公约数为:", a)
print("最小公倍数为:", a * b // a)
```
方法二:质因数分解法
```python
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
# 质因数分解
prime_factors_a = []
prime_factors_b = []
i = 2
while i <= a:
if a % i == 0:
prime_factors_a.append(i)
a //= i
else:
i += 1
i = 2
while i <= b:
if b % i == 0:
prime_factors_b.append(i)
b //= i
else:
i += 1
# 计算最大公约数
common_factors = []
for factor in prime_factors_a:
if factor in prime_factors_b:
common_factors.append(factor)
prime_factors_b.remove(factor)
gcd = 1
for factor in common_factors:
gcd *= factor
# 计算最小公倍数
lcm = gcd * a * b
print("最大公约数为:", gcd)
print("最小公倍数为:", lcm)
```
阅读全文