寻找 HCF(最大公因数) 或 GCD(最大公约数) 的 Python 程序

2022-05-03 00:00:00 寻找 最大公约数 公因数

在这个例子中,你将学习使用两种不同的方法找到两个数字的 GCD: 函数和循环以及欧几里得算法
为了理解这个例子,你应该了解下面的 Python 编程主题:

Python Functions 函数
Python Recursion 4. Python 递归
Python Function Arguments 函数参数
两个数的最高公因数(H.C.F)或最大公约数(G.C.D)是完全除以两个给定数的最大正整数。例如,12和14的 H.C.F 是2。

源代码: Using loop

# Python program to find H.C.F of two numbers

# define a function
def compute_hcf(x, y):

# choose the smaller number
    if x > y:
        smaller = y
    else:
        smaller = x
    for i in range(1, smaller+1):
        if((x % i == 0) and (y % i == 0)):
            hcf = i 
    return hcf

num1 = 54 
num2 = 24

print("The H.C.F. is", compute_hcf(num1, num2))

输出

The H.C.F. is 6

这里,存储在变量 num1和 num2中的两个整数被传递给 compute _ hcf()函数。
在函数中,我们首先确定两个数中较小的一个,因为 H.C.F 只能小于或等于最小数。然后我们使用 for 循环从1到这个数。
在每次迭代中,我们检查我们的数字是否完全除以两个输入数字。如果是这样,我们将数字存储为 h.c.f。在循环结束时,我们得到了最大的一个数,这个数完全地除以这两个数。
上述方法易于理解和实现,但效率不高。一个更有效的方法是欧几里得算法。

欧几里得算法

该算法基于 H.C.F. 两个数除以它们的差。
在这个算法中,我们用较大的除以较小的,然后取得余数。现在,用小数除以这个余数,重复直到余数为0。
例如,如果我们想找到 H.C.F. 在 54 和 24 中,我们将 54 除以 24。余数为 6。现在,我们将 24 除以 6,余数为 0。因此,6 是所需的 H.C.F。

源代码: 使用欧几里得算法

# 使用欧几里得算法查找 HCF 的函数
def compute_hcf(x, y):
   while(y):
       x, y = y, x % y
   return x

hcf = compute_hcf(300, 400)
print("The HCF is", hcf)

在这里我们循环直到 y 变为零。语句 x,y = y,x% y 在 Python 中进行值交换。

相关文章