Python 求2个正整数的最小公倍数
时间: 2023-05-18 14:04:54 浏览: 97
设这两个正整数分别为 x 和 y,最小公倍数是 z。
求最小公倍数的常见方法是使用辗转相除法求 x 和 y 的最大公约数,再用 z=xy/gcd(x,y) 求出最小公倍数。
如果你不知道辗转相除法是什么,可以先查阅一下资料。
下面是使用 Python 实现的代码:
```
def gcd(x, y):
while y != 0:
x, y = y, x % y
return x
def lcm(x, y):
return x * y // gcd(x, y)
x = 6
y = 8
z = lcm(x, y)
print(z)
```
输出结果为 24,即最小公倍数。
相关问题
python求2个正整数的最小公倍数
### 回答1:
计算最小公倍数的 Python 代码如下:
```python
def lcm(x, y):
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
num1 = int(input("请输入第一个数字: "))
num2 = int(input("请输入第二个数字: "))
print("最小公倍数是", lcm(num1, num2))
```
### 回答2:
要求两个正整数的最小公倍数,我们需要先了解两个正整数的因数。一个正整数的因数就是能够整除这个正整数的正整数。比如说数字6,它的因数就是1,2,3,和6。
那么如果我们要求两个正整数的最小公倍数,就需要找到它们的公共因数,也就是能够同时整除这两个正整数的正整数。最小公倍数就是这些公共因数中最小的一个。
我们可以用for循环的方式来找到这些公共因数。首先我们需要计算出这两个正整数的最大值和最小值,然后从最大值开始往下遍历,找到第一个同时能够整除这两个数的正整数,那么这个正整数就是两个数的最小公倍数。
以下是Python代码示例:
```
num1 = int(input("请输入第一个正整数: "))
num2 = int(input("请输入第二个正整数: "))
# 计算最大值和最小值
if num1 > num2:
max_num = num1
min_num = num2
else:
max_num = num2
min_num = num1
# 从最大值往下遍历,找到第一个同时能够整除这两个数的正整数
for i in range(max_num, max_num * min_num + 1):
if i % num1 == 0 and i % num2 == 0:
print("最小公倍数为:", i)
break
```
在这个代码示例中,我们首先输入了两个正整数,然后计算了最大值和最小值。接着我们用for循环从最大值往下遍历,每次判断如果这个正整数同时能够整除这两个数,那么就输出这个正整数并且跳出循环。
这个算法的时间复杂度是O(N^2),因为我们需要从最大值到最大值和最小值的乘积中遍历所有的正整数。如果时间复杂度过高,可以使用更高效的算法来求解最小公倍数,比如辗转相除法或者质因数分解法。
### 回答3:
最小公倍数是指两个或多个数的公共倍数中最小的一个数,如果求2个正整数的最小公倍数,我们可以使用以下两种方法:
方法1:暴力枚举法
暴力枚举法就是从两个数的最大值开始,一步一步增加直到找到它们的公倍数。
具体的,我们可以先用max函数获得两个数中的较大值,然后从这个值开始一个个往上加,直到所得的值能同时被这两个数整除,那么这个值就是它们的最小公倍数。
代码如下:
```
def lcm(num1, num2):
max_num = max(num1, num2)
while True:
if max_num % num1 == 0 and max_num % num2 == 0:
return max_num
max_num += 1
```
方法2:辗转相除法
辗转相除法,也叫欧几里得算法,是一种求最大公约数和最小公倍数的常用方法。
具体来说,我们可以先求出这两个数的最大公约数gcd,然后通过公式 lcm = num1 * num2 / gcd 得出最小公倍数。
求gcd可以使用递归或迭代的方法,这里使用递归的方法。
代码如下:
```
def gcd(num1, num2):
if num2 == 0:
return num1
else:
return gcd(num2, num1 % num2)
def lcm(num1, num2):
return num1 * num2 / gcd(num1, num2)
```
以上就是求2个正整数最小公倍数的两种方法,可以根据实际需求选择合适的方法进行求解。
Python求2个正整数的最小公倍数代码
可以使用以下代码来求解2个正整数的最小公倍数:
```python
def lcm(x, y):
# 选择两个数中的最大值
if x > y:
greater = x
else:
greater = y
while True:
if greater % x == 0 and greater % y == 0:
lcm = greater
break
greater += 1
return lcm
# 示例
print("最小公倍数为:", lcm(24, 36))
```
输出:
```
最小公倍数为: 72
```
其中,我们使用了一个 `while` 循环来遍历两个数中最大的那个数 `greater`,直到找到能同时整除 `x` 和 `y` 的数为止,这个数就是它们的最小公倍数。
阅读全文