在 Python 中实现最大公约数操作

Vaibhhav Khetarpal 2023年1月30日
  1. 在 Python 中使用递归实现 GCD 的代码
  2. 在 Python 中使用 for 循环实现最大公约数的代码
  3. 在 Python 中使用欧几里德算法实现最大公约数的代码
  4. 在 Python 中使用 math.gcd() 函数计算最大公约数
在 Python 中实现最大公约数操作

最大公约数 (GCD),也称为两个值的最高公因数 (HCF),是将两个给定数相除的最大数。最大公约数也可以用 Python 计算和实现。

本教程演示了在 Python 中实现最大公约数的代码的不同方法。

在 Python 中使用递归实现 GCD 的代码

在函数定义块中调用自身的函数称为递归。递归可用于创建计算两个数字的 GCD 的函数。这个过程对于减少代码长度非常有用,并且可以方便地减少不必要的函数调用。

下面的代码使用递归来实现 Python 中最大公约数的代码。

def gcd1(x, y):
    if y == 0:
        return x
    else:
        return gcd1(y, x % y)


x = 72
b = 60

print("The gcd is : ", end="")
print(gcd1(72, 60))

上面的程序给出了以下结果。

输出:

The gcd is : 12

在 Python 中使用 for 循环实现最大公约数的代码

一个简单的 for 循环和 if-else 语句可以帮助实现与本文中的其他方法相同的任务。

以下代码使用 for 循环来实现 Python 中最大公约数的代码。

def gcd2(a, b):

    if a > b:
        small = b
    else:
        small = a
    for i in range(1, small + 1):
        if (a % i == 0) and (b % i == 0):
            gcd = i

    return gcd


a = 72
b = 60

print("The gcd is : ", end="")
print(gcd2(72, 60))

上面的代码给出了以下结果。

输出:

The gcd is : 12

在 Python 中使用欧几里德算法实现最大公约数的代码

欧几里得算法是另一种能够快速计算两个数的最大公约数的技术。

欧几里得算法是根据两个主要事实来定义的。

  • 如果较小的数字减去较大的数字,则 GCD 没有变化。因此,我们最终找到了两个数字中较大值的继续减法的 GCD。
  • 如果我们除以较小的数,而不是在此处进行减法,算法会在遇到余数 0 时自动停止。

下面的程序使用欧几里得算法来实现 Python 中最大公约数的代码。

def gcd3(p, q):

    while q:
        p, q = q, p % q

    return p


p = 72
q = 60

print("The gcd is : ", end="")
print(gcd3(72, 60))

该代码提供了以下结果。

输出:

The gcd is : 12

在 Python 中使用 math.gcd() 函数计算最大公约数

现在,我们可以简单地使用预定义的 math.gcd() 函数来计算两个数字的 GCD,而不是创建用户定义的函数。math 模块需要导入到 Python 代码中才能使用 gcd() 函数。

以下代码使用 math.gcd() 函数来计算 Python 中的最大公约数。

import math

a = math.gcd(72, 60)
print(a)

上面的程序提供了以下结果。

输出:

12

在 Python 3.5 及更高版本中,gcd 函数包含在 math 模块中。在早期的 Python 版本中,gcd 函数包含在 fractions 模块中。但是,从 Python 3.5 开始,它现在已被弃用。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

相关文章 - Python Number