用python 用穷举法求2个正整数的最大公约数和最小公倍数
时间: 2024-05-08 12:20:17 浏览: 134
好的,关于您的第一个问题,可以使用以下代码来用穷举法求两个正整数的最大公约数和最小公倍数:
```python
# 获取两个正整数
num1 = int(input("请输入第一个正整数:"))
num2 = int(input("请输入第二个正整数:"))
# 计算最大公约数和最小公倍数
# 最大公约数
for i in range(1, max(num1, num2)+1):
if num1 % i == 0 and num2 % i == 0:
gcd = i
# 最小公倍数
lcm = num1 * num2 // gcd
# 输出结果
print("{0}和{1}的最大公约数为:{2}".format(num1, num2, gcd))
print("{0}和{1}的最小公倍数为:{2}".format(num1, num2, lcm))
```
请注意,这里的穷举法的时间复杂度比较高,当两个数字很大时会运算缓慢。我们可以使用更高效的算法来提高效率。
相关问题
分别使用辗转相除法和穷举法求两个整数的最大公约数和最小公倍数
【辗转相除法】
辗转相除法又叫欧几里得算法,是求两个正整数的最大公约数的一种方法。它的基本思想是用较小的数除较大的数,再用出现的余数去除除数,不断重复这个过程,直到余数为零为止。最后的除数就是这两个数的最大公约数。
求两个整数a和b的最大公约数的辗转相除法公式如下:
gcd(a,b) = gcd(b,a%b)
其中,a%b表示a除以b所得的余数,gcd(a,b)表示a和b的最大公约数。
代码实现:
```python
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
```
【穷举法】
穷举法是一种简单直观的方法,它的基本思想是列举出所有可能的公约数,然后找出其中最大的一个。求两个整数a和b的最大公约数的穷举法公式如下:
gcd(a,b) = max({i | i是a的因数 且 i是b的因数})
其中,i是a和b的公约数,max表示取其中的最大值。
代码实现:
```python
def gcd(a, b):
res = 1
for i in range(1, min(a, b) + 1):
if a % i == 0 and b % i == 0:
res = i
return res
```
最小公倍数的求法:
根据最大公约数的定义,有以下公式:
lcm(a,b) = a * b / gcd(a,b)
其中,lcm表示a和b的最小公倍数。
代码实现:
```python
def lcm(a, b):
return a * b // gcd(a, b)
```
从键盘输入两个正整数,输出这两个整数的最大公约数与最小公倍数(最大公约数的其中一种求法可以参考课程资料中的最大公约数),Python,穷举法
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
# 求最大公约数
gcd = 1
for i in range(1, min(a, b) + 1):
if a % i == 0 and b % i == 0:
gcd = i
# 求最小公倍数
lcm = a * b // gcd
print("最大公约数为:", gcd)
print("最小公倍数为:", lcm)
阅读全文