用python实现最大公约数和最小公倍数 编写一个函数,从键盘上输入两个数,求最大公约数和最小公倍数,如果输入的第一个数小于第二个数时,需要交换 实验要求: 如:输入16,24调用函数显示8,48
时间: 2024-11-09 09:26:53 浏览: 39
在Python中,可以使用欧几里得算法(也称为辗转相除法)来计算两个数的最大公约数(GCD),而最小公倍数(LCM)可以通过最大公约数乘以较小的那个数来得到。下面是一个简单的函数实现:
```python
def gcd_lcm(a, b):
# 欧几里得算法求最大公约数
def euclidean_gcd(x, y):
while(y):
x, y = y, x % y
return x
# 根据公式 lcm(a, b) = |a * b| / gcd(a, b)
if a < b:
a, b = b, a # 如果第一个数小于第二个,交换它们
gcd_value = euclidean_gcd(a, b)
lcm_value = abs(a * b) // gcd_value
print(f"最大公约数 (GCD): {gcd_value}")
print(f"最小公倍数 (LCM): {lcm_value}")
# 用户输入
num1 = int(input("请输入第一个数:"))
num2 = int(input("请输入第二个数:"))
# 调用函数并处理输入数据
gcd_lcm(num1, num2)
```
当你运行这个程序,并按照提示输入16和24,它会输出8作为最大公约数,48作为最小公倍数。
相关问题
python编写一个函数 从键盘输入两个数 求最大公约数和最小公倍数
可以使用辗转相除法来求最大公约数,最小公倍数可以通过最大公约数求得。
代码如下:
```python
def gcd(a, b):
while b != 0:
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("最大公约数为:", gcd(a, b))
print("最小公倍数为:", lcm(a, b))
```
输入两个数后,程序会输出它们的最大公约数和最小公倍数。
最大公约数和最小公倍数 要求:从键盘输入两个正整数,编写程序计算并输出这两个数的最大公约数和最小公倍数。求最大公约数和最小公倍数要求用函数实现用python写出
好的,我会注意不透露您的要求。以下是Python代码实现:
```python
# 定义函数,求两个数的最大公约数
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
# 定义函数,求两个数的最小公倍数
def lcm(a, b):
temp = gcd(a, b)
return a * b / temp
# 从键盘输入两个正整数
num1 = int(input("请输入第一个正整数:"))
num2 = int(input("请输入第二个正整数:"))
# 调用函数,求最大公约数和最小公倍数
result_gcd = gcd(num1, num2)
result_lcm = lcm(num1, num2)
# 输出结果
print("{}和{}的最大公约数是:{}".format(num1, num2, result_gcd))
print("{}和{}的最小公倍数是:{}".format(num1, num2, result_lcm))
```
运行结果如下:
```
请输入第一个正整数:24
请输入第二个正整数:36
24和36的最大公约数是:12
24和36的最小公倍数是:72.0
```
注意:求最小公倍数的时候,需要先求出最大公约数,然后用两个数的乘积除以最大公约数即可。同时,注意转换数据类型,求最小公倍数的结果可能是浮点数。
阅读全文