📜  在不使用递归或欧几里得算法的情况下找到两个数字的HCF(1)

📅  最后修改于: 2023-12-03 14:51:23.091000             🧑  作者: Mango

找到两个数字的HCF

什么是HCF?

HCF(Highest Common Factor),即最大公约数,是两个或多个整数共有约数中最大的一个数。

如何找到两个数字的HCF
方法一:暴力枚举

暴力枚举法是一种比较简单的找到两个数字的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)
注意事项

以上两种方法均不使用递归或欧几里得算法。

总结

对于小数据量的情况,可以使用暴力枚举法找到最大公约数;对于大数据量的情况,建议使用辗转相除法来找到最大公约数。