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

Vaibhhav Khetarpal 2023年1月30日 2021年10月2日
  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