python完成函数fun(a,b),该函数要同时返回两个正整数a、b的最大公约数和最小公倍数。
时间: 2024-03-24 20:37:10 浏览: 92
可以使用辗转相除法求最大公约数,及两数乘积除以最大公约数求最小公倍数。
代码如下:
```python
def fun(a, b):
# 求最大公约数
x = a
y = b
while y:
x, y = y, x % y
gcd = x
# 求最小公倍数
lcm = a * b // gcd
return gcd, lcm
```
其中,`x, y = y, x % y` 是 Python 中的一种快捷的写法,等价于:
```python
temp = y
y = x % y
x = temp
```
这样写更加简洁。
相关问题
完成函数fun(a,b),该函数要返回两个正整数a、b的最大公约数和最小公倍数。主程序中输入两个正整数,调用该函数,并输出两个数的最大公约数和最小公倍数。 函数接口定义: 在这里描述函数接口。例如: def fun(a,b): 参数a、b是两个正整数,函数要输出两个数:a和b的最大公约数和最小公倍数。 裁判测试程序样例: /* 请在这里填写答案 */ m,n=eval(input()) s=fun(m,n) print("最大公约数为%d,最小公倍数为%d。"%(s[0],s[1])) 输入样例: 在这里给出一组输入。例如: 56,42 输出样例: 在这里给出相应的输出。例如: 最大公约数为14,最小公倍数为168。
根据题目要求,可以按照上一题中的方法,编写如下代码:
```python
def fun(a, b):
# 求最大公约数
x = a
y = b
while y:
x, y = y, x % y
gcd = x
# 求最小公倍数
lcm = a * b // gcd
return gcd, lcm
# 主程序
m, n = map(int, input().split(','))
s = fun(m, n)
print("最大公约数为%d,最小公倍数为%d。" % (s[0], s[1]))
```
其中,`map(int, input().split(','))` 将输入的字符串按逗号分隔,转化成整数类型。
编写一个函数,功能是求两个正整数 m 和 n 的最大公约数和最小公倍数,调用该函数,输出最大公约数和最小公倍数。python
以下是 Python 代码实现:
```python
def gcd_lcm(m, n):
"""
求两个正整数 m 和 n 的最大公约数和最小公倍数
"""
# 先求最大公约数
max_val = max(m, n)
min_val = min(m, n)
while min_val != 0:
tmp = max_val % min_val
max_val = min_val
min_val = tmp
gcd = max_val
# 再求最小公倍数
lcm = m * n // gcd
return gcd, lcm
# 调用函数并输出结果
m = 12
n = 18
res = gcd_lcm(m, n)
print("最大公约数:", res[0])
print("最小公倍数:", res[1])
```
输出结果为:
```
最大公约数: 6
最小公倍数: 36
```
希望能对您有所帮助!
阅读全文