不使用math模块中的任何函数。编程:输入2个大于0的正整数,输出最小公倍数。 输入格式:在2行中分别输入一个整数 输入样例: 12 18 输出样例: 36
时间: 2024-03-10 07:49:39 浏览: 79
好的,这是一个求最小公倍数的程序,代码如下:
```python
a = int(input())
b = int(input())
# 求最大公约数
def gcd(a, b):
while b:
a, b = b, a % b
return a
# 求最小公倍数
def lcm(a, b):
return a * b // gcd(a, b)
print(lcm(a, b))
```
程序首先通过`input()`函数获取用户输入的两个正整数,将其转换为整数类型并分别赋值给变量`a`和`b`。然后定义了两个函数:`gcd(a, b)`用于求最大公约数,`lcm(a, b)`用于求最小公倍数。其中`gcd`函数采用了辗转相除法求解,不断交换两个数的值,直到b为0,此时a即为最大公约数。最小公倍数可根据公式lcm(a, b) = a * b / gcd(a, b)求得,这里直接调用了`gcd`函数来求最大公约数,并将两个数的乘积除以最大公约数即可得到最小公倍数。
最后,将最小公倍数输出即可。
相关问题
用python编写demo(var1,var2)函数,从键盘输入两个正整数作为函数参数,返回两个值,一个为最大公约数,一个为最小公倍数。 输入格式: var1,var2 输出格式: 计算输出最大公约数和最小公倍数。(注意:不允许使用math模块中的gcd()函数) 输入样例: 在这里给出一组输入。例如: 2,3 输出样例: 在这里给出相应的输出。例如: 最大公约数和最大公倍数为(1, 6)
你可以参考以下代码实现:
```python
def demo(var1, var2):
# 求最大公约数
if var1 < var2:
var1, var2 = var2, var1
while var2 != 0:
var1, var2 = var2, var1 % var2
gcd = var1
# 求最小公倍数
lcm = var1 * (var2 // var1)
return gcd, lcm
# 从键盘输入两个正整数
var1, var2 = map(int, input().split(','))
gcd, lcm = demo(var1, var2)
print("最大公约数和最小公倍数为({}, {})".format(gcd, lcm))
```
输入样例:
```
2,3
```
输出样例:
```
最大公约数和最小公倍数为(1, 6)
```
编写函数,接收两个正整数作为参数,返回一个元组,其中第一个元素为两个正整数的最大公约数,第二个元素为最小公倍数。不允许使用math模块中的gcdl函数样例输入: 20 30 样例输出: (10,60)
编写一个函数来计算两个正整数的最大公约数(GCD)和最小公倍数(LCM),可以采用欧几里得算法(也称为辗转相除法)来求最大公约数,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来计算最小公倍数。以下是Python代码实现:
```python
def gcd_lcm(num1, num2):
def euclidean_gcd(x, y):
while y != 0:
x, y = y, x % y
return x
def lcm_two_numbers(x, y):
return abs(x * y) // euclidean_gcd(x, y)
return (euclidean_gcd(num1, num2), lcm_two_numbers(num1, num2))
# 示例
input_numbers = 20, 30
result = gcd_lcm(input_numbers[0], input_numbers[1])
print(result) # 输出:(10, 60)
```
在这个例子中,`gcd_lcm` 函数首先定义了两个内部辅助函数:`euclidean_gcd` 和 `lcm_two_numbers`。`euclidean_gcd` 用于找到两个数的最大公约数,`lcm_two_numbers` 则是根据最大公约数计算最小公倍数。
阅读全文