任意输入2个整数,编写2个函数分别求这2个整数的最大公约数和最小公倍数,结果在主函数中输出。
时间: 2023-05-31 09:18:49 浏览: 181
### 回答1:
可以使用辗转相除法来求最大公约数,即不断用较小数去除较大数,直到余数为,此时较大数即为最大公约数。
最小公倍数可以通过最大公约数来求得,即两数的积除以最大公约数。
以下是示例代码:
```python
def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
return a * b // gcd(a, b)
if __name__ == '__main__':
a = int(input('请输入第一个整数:'))
b = int(input('请输入第二个整数:'))
print(f'{a}和{b}的最大公约数为:{gcd(a, b)}')
print(f'{a}和{b}的最小公倍数为:{lcm(a, b)}')
```
运行结果:
```
请输入第一个整数:12
请输入第二个整数:18
12和18的最大公约数为:6
12和18的最小公倍数为:36
```
### 回答2:
求最大公约数的函数:
最大公约数指的是两个或多个整数共有约数中,最大的一个数。求两个整数a和b的最大公约数,需要先用大数减小数,然后用得到的余数作为新的小数,将大数变成小数,继续做大数减小数的运算,直到余数为零,此时小数的绝对值就是两个整数的最大公约数。
代码实现如下:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
求最小公倍数的函数:
最小公倍数指的是两个或多个整数公有的倍数中,最小的一个数。求两个整数a和b的最小公倍数,需要先求出它们的最大公约数,然后将a和b分别除以最大公约数,然后将得到的商相乘,最后得到的结果就是它们的最小公倍数。
代码实现如下:
def lcm(a, b):
return a * b // gcd(a, b)
最后,在主函数中读入两个整数,分别调用以上两个函数求它们的最大公约数和最小公倍数,然后输出结果即可。
### 回答3:
题目要求我们编写两个函数,一个用于求两个整数的最大公约数,另一个用于求两个整数的最小公倍数,并在主函数中输出结果。
首先,我们来看最大公约数的求法。最大公约数,也叫最大公因数,是指两个或多个整数共有的约数中最大的一位数。我们可以用欧几里得算法来求最大公约数。欧几里得算法又叫辗转相除法,原理是:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
函数示例代码如下:
```
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(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
return a * b // gcd(a, b)
# 主函数
if __name__ == '__main__':
num1 = int(input('请输入第一个整数:'))
num2 = int(input('请输入第二个整数:'))
print('%d和%d的最大公约数是:%d' % (num1, num2, gcd(num1, num2)))
print('%d和%d的最小公倍数是:%d' % (num1, num2, lcm(num1, num2)))
```
注意,最后的`__name__ == '__main__'`判断语句是必须的,它保证只有在作为主程序运行时才会执行后面的代码,而在被导入时不会执行。
阅读全文