python 题目描述:输入两个正整数 m和n,求解并输出给定两个整数的最小公倍数输入格式:在一行中输入两个整数m和n,整数之间用逗号隔开。输出格式:在一行中输出一个整数,即 m 和n的最小公倍数
时间: 2024-05-03 20:21:43 浏览: 197
解题思路:最小公倍数可以用两个数的乘积除以它们的最大公约数求得。
Python代码实现:
```python
m, n = map(int, input().split(',')) # 输入两个数,以逗号分隔
# 求最大公约数
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
lcm = m * n // gcd(m, n) # 求最小公倍数
print(lcm) # 输出最小公倍数
```
输入样例:
```
2,3
```
输出样例:
```
6
```
相关问题
输入两个正整数 m和n,求解并输出给定两个整数的最小公倍数
算法一:暴力枚举法
最简单的方法是从较大的数开始逐个判断是否同时被两个数整除,找到最小的能被整除的数即为它们的最小公倍数。但是这种方法的时间复杂度为O(mn),当m和n很大时,计算量会非常大。
算法二:辗转相除法
由于最小公倍数等于两数之积除以它们的最大公约数,所以可以先求出它们的最大公约数,然后用它们的乘积除以最大公约数即可得到最小公倍数。而求最大公约数的一个常用方法是辗转相除法,即不断用较小数去除较大数,直到余数为零为止,此时较大数就是最大公约数。
算法三:质因数分解法
将两个数分别分解质因数,然后将它们的公共因子乘起来。如果一个质数在两个数中出现的次数不同,则需要取两数中出现该质数最多的次数。例如,24和30的最小公倍数为2^3 * 3^1 * 5^1 = 120,其中2出现了3次,3和5分别出现了1次。
下面是辗转相除法的Python代码实现:
``` python
def gcd(m, n):
if n == 0:
return m
else:
return gcd(n, m % n)
m = int(input("请输入第一个正整数:"))
n = int(input("请输入第二个正整数:"))
lcm = m * n // gcd(m, n)
print("最小公倍数为:", lcm)
```
输入:
```
请输入第一个正整数:12
请输入第二个正整数:18
```
输出:
```
最小公倍数为: 36
```
用python写以下题目:输入在一行中给出的两个正整数M和N,求两个给定正整数的最大公约数和最小公倍数。
M 和 N 的最大公约数可以用辗转相除法求解,而最小公倍数则可以用 M 和 N 的积除以它们的最大公约数求解。
代码如下:
```python
m, n = map(int, input().split())
# 求最大公约数
a, b = m, n
while b != 0:
a, b = b, a % b
gcd = a
# 求最小公倍数
lcm = m * n // gcd
print(gcd, lcm)
```
示例输入:
```
12 18
```
示例输出:
```
6 36
```
阅读全文