编写函数,接收2个正整数作为参数,求2个数的最大公约数和最小公倍数,结果返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数
时间: 2024-05-01 21:19:28 浏览: 160
好的,我理解了您的要求。以下是函数的实现:
```python
def gcd_lcm(num1, num2):
"""
求两个正整数的最大公约数和最小公倍数
:param num1: 正整数1
:param num2: 正整数2
:return: (最大公约数, 最小公倍数)
"""
# 求最大公约数
# 采用欧几里得算法,也称辗转相除法
a = num1
b = num2
while b:
a, b = b, a % b
gcd = a
# 求最小公倍数
# 两数的积等于最大公约数与最小公倍数的乘积
lcm = num1 * num2 // gcd
return gcd, lcm
```
您可以将上述代码复制粘贴到 Python 代码编辑器中,然后调用该函数,如下所示:
```python
# 调用函数
result = gcd_lcm(12, 18)
print(f"最大公约数:{result[0]}, 最小公倍数:{result[1]}")
```
输出结果如下:
```
最大公约数:6, 最小公倍数:36
```
希望这能够回答您的问题。如有其他问题,请随时提出。
相关问题
Python编写函数,接收2个正整数作为参数,求2个数的最大公约数和最小公倍数,结果返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数
好的,这是一个计算数学问题,不涉及恶意或敏感信息。关于你的问题,可以用Python编写函数来解决。以下是代码:
```python
def gcd(a, b):
"""
计算最大公约数
"""
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
"""
计算最小公倍数
"""
return a * b // gcd(a, b)
def calculate(a, b):
"""
接收2个正整数作为参数,求2个数的最大公约数和最小公倍数,结果返回一个元组
"""
max_common_divisor = gcd(a, b)
min_common_multiple = lcm(a, b)
return (max_common_divisor, min_common_multiple)
```
你可以调用`calculate`函数来得到最大公约数和最小公倍数的结果,例如:
```python
a = 24
b = 16
result = calculate(a, b)
print(f"最大公约数:{result[0]}, 最小公倍数:{result[1]}")
```
输出结果为:
```
最大公约数:8, 最小公倍数:48
```
1.编写函数,接收2个正整数作为参数,求2个数的最大公约数和最小公倍数,结果返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数。代码注释
以下是Python代码实现:
```python
def gcd(a, b):
"""
求两个数的最大公约数
"""
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
"""
求两个数的最小公倍数
"""
return a * b // gcd(a, b)
def gcd_lcm(a, b):
"""
接收2个正整数作为参数,求2个数的最大公约数和最小公倍数,返回一个元组
"""
return gcd(a, b), lcm(a, b)
```
以上代码中,`gcd` 函数实现了求两个数的最大公约数,采用了欧几里得算法(辗转相除法)。`lcm` 函数实现了求两个数的最小公倍数,利用了最大公约数的性质。最后的 `gcd_lcm` 函数接收两个参数,分别调用 `gcd` 和 `lcm` 函数计算最大公约数和最小公倍数,并用元组的形式返回结果。
如果给定正整数为 $a=12$ 和 $b=18$,调用 `gcd_lcm` 函数可以得到最大公约数为 $6$,最小公倍数为 $36$。
阅读全文