📅  最后修改于: 2020-09-20 16:33:23             🧑  作者: Mango
两个数字的最高公共因子(HCF)或最大公共除数(GCD)是将两个给定数字完美除的最大正整数。例如,HCF为12和14为2。
# 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()
函数。该函数计算HCF这两个数字并将其返回。
在函数,我们首先确定两个数字中的较小者,因为HCF只能小于或等于最小数字。然后,我们使用for
循环从1到该数字。
在每次迭代中,我们检查我们的数字是否完美地划分了两个输入数字。如果是这样,我们将数字存储为HCF。在循环结束时,我们将得到最大的数字,该数字完美地将两个数字相除。
上述方法易于理解和实施,但是效率不高。查找HCF的一种更有效的方法是欧几里得算法。
该算法基于以下事实:两个数字的HCF也将它们的差除。
在此算法中,我们将较大除以较小,然后取余数。现在,将较小者除以该余数。重复直到剩余为0。
例如,如果要查找54和24的HCF,则将54除以24。余数为6。现在,将24除以6,余数为0。因此,6是必需的HCF
# Function to find HCF the Using Euclidian algorithm
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中交换了值。单击此处以了解有关在Python交换变量的更多信息。
在每次迭代中,我们将y
的值同时放置在x
,其余的(x % y)
放置在y
。当y
变为零时, x
具有HCF。