Python求最大公约数和最小公倍数代码实例
时间: 2023-05-16 20:06:20 浏览: 158
以下是 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)
```
其中,`gcd` 函数用于求最大公约数,`lcm` 函数用于求最小公倍数。
相关问题
python用构造函数的方法求最大公约数和最小公倍数
可以使用类和构造函数来实现求最大公约数和最小公倍数的功能。具体实现如下:
```python
class Math:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def gcd(self):
# 求最大公约数
if self.num1 < self.num2:
self.num1, self.num2 = self.num2, self.num1
while self.num2 != 0:
self.num1, self.num2 = self.num2, self.num1 % self.num2
return self.num1
def lcm(self):
# 求最小公倍数
return self.num1 * self.num2 // self.gcd()
# 实例化对象,传入两个数
m = Math(12, 16)
# 求最大公约数和最小公倍数
print(m.gcd()) # 输出为4
print(m.lcm()) # 输出为48
```
在上面的示例中,我们定义了一个`Math`类,并在构造函数中接收两个参数`num1`和`num2`。然后,我们定义了两个方法`gcd`和`lcm`,分别用于计算最大公约数和最小公倍数。
在`gcd`方法中,我们使用辗转相除法来求最大公约数。在`lcm`方法中,我们先调用`gcd`方法求出最大公约数,然后用两数之积除以最大公约数来求最小公倍数。
最后,我们实例化`Math`对象,并调用`gcd`和`lcm`方法来求最大公约数和最小公倍数。
python写一个类GCM,该类有两个实例变量a和b,方法func()用来返回a和b的最大公约数;然后编写一个该类的子类LCM,要求子类重写方法func()返回a和b的最小公倍数,要求在重写的方法的方法体中调用父类方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回 补充代码,并求15和20的最大公约数和最小公倍数
以下是补充代码:
```python
class GCM:
def __init__(self, a, b):
self.a = a
self.b = b
def func(self):
# 求最大公约数
x = self.a
y = self.b
while y != 0:
x, y = y, x % y
return x
class LCM(GCM):
def func(self):
# 调用父类方法求最大公约数
m = super().func()
# 返回最小公倍数
return self.a * self.b // m
# 测试代码
gcm = GCM(15, 20)
lcm = LCM(15, 20)
print("最大公约数:", gcm.func()) # 输出:最大公约数:5
print("最小公倍数:", lcm.func()) # 输出:最小公倍数:60
```
解释一下代码:
- `GCM` 类表示求最大公约数,有两个实例变量 `a` 和 `b`,以及一个方法 `func` 用来返回 `a` 和 `b` 的最大公约数。
- `LCM` 类是 `GCM` 类的子类,表示求最小公倍数。该类重写了 `func` 方法,首先调用 `super().func()` 方法求出 `a` 和 `b` 的最大公约数 `m`,然后将最小公倍数返回为 `(a*b)/m`。
- 最后,我们创建了 `GCM` 和 `LCM` 的实例,分别传入参数 `15` 和 `20`,然后调用它们的 `func` 方法,分别得到最大公约数和最小公倍数。
注意:这里的求最大公约数使用的是欧几里得算法,即辗转相除法。
阅读全文