📅  最后修改于: 2023-12-03 14:51:23.091000             🧑  作者: Mango
HCF(Highest Common Factor),即最大公约数,是两个或多个整数共有约数中最大的一个数。
暴力枚举法是一种比较简单的找到两个数字的HCF的方法,但是其时间复杂度较高,不适用于大数据量的场景。
num1 = 12
num2 = 18
hcf = 1
for i in range(1, min(num1, num2)+1):
if num1 % i == 0 and num2 % i == 0:
hcf = i
print("最大公约数为:", hcf)
辗转相除法,也称为欧几里得算法,是一种更加高效的找到两个数字的HCF的方法,其时间复杂度为O(log n)。
num1 = 12
num2 = 18
while num2 != 0:
temp = num2
num2 = num1 % num2
num1 = temp
print("最大公约数为:", num1)
以上两种方法均不使用递归或欧几里得算法。
对于小数据量的情况,可以使用暴力枚举法找到最大公约数;对于大数据量的情况,建议使用辗转相除法来找到最大公约数。