python:完成函数fun(a,b),该函数要返回两个正整数a、b的最大公约数和最小公倍数。主程序中输入两个正整数,调用该函数,并输出两个数的最大公约数和最小公倍数。
时间: 2024-03-14 12:46:54 浏览: 68
可以使用欧几里得算法求最大公约数,然后通过最大公约数和两个数的乘积求得最小公倍数,具体实现如下:
```python
def fun(a, b):
# 求最大公约数
while b != 0:
a, b = b, a % b
gcd = a
# 求最小公倍数
lcm = a * (b // gcd)
return gcd, lcm
# 主程序
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
gcd, lcm = fun(a, b)
print("{}和{}的最大公约数为{},最小公倍数为{}。".format(a, b, gcd, lcm))
```
执行以上代码,输入两个正整数,即可得到它们的最大公约数和最小公倍数。
相关问题
python完成函数fun(a,b),该函数要同时返回两个正整数a、b的最大公约数和最小公倍数。
可以使用辗转相除法求最大公约数,及两数乘积除以最大公约数求最小公倍数。
代码如下:
```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
```
这样写更加简洁。
python求两个正整数a,b的最大公约数和最小公倍数
最大公约数可以使用欧几里得算法,也叫辗转相除法。
代码如下:
```python
def gcd(a, b):
while b!=0:
r = a%b
a = b
b = r
return a
def lcm(a, b):
return a*b//gcd(a,b)
a = int(input("请输入a:"))
b = int(input("请输入b:"))
print("a和b的最大公约数为:", gcd(a,b))
print("a和b的最小公倍数为:", lcm(a,b))
```
如果还有其它问题,可以继续提问。