最有效的方法找到3个数字的最大公因数?

时间:2014-12-31 20:46:07

标签: python math

我需要尽可能多地简化三个数字,因此我需要最大的共同因素。

现在我正在遍历3下方的所有数字,并检查它是否可被它们整除,但我将处理非常大的数字,因此效率低下。有没有更有效的方法来查找GCF?

2 个答案:

答案 0 :(得分:4)

嗯,standard library

中有一些内容
import fractions
fractions.gcd(100, fractions.gcd(10, 20))
10

答案 1 :(得分:0)

如果有人正在寻找执行此操作的缓慢(但非常简单)的方法:

def find_divisors(number):
    divisors = []
    for i in range(1, number + 1):
        if number % i == 0:
            divisors.append(i)
    return divisors

def find_greatest_common_divisor(numbers):
    divisors = [set(find_divisors(number)) for number in numbers]
    common_divisors = set.intersection(*divisors)
    greatest_common_divisor = max(common_divisors)
    return greatest_common_divisor

test_1 = [2, 5]
test_2 = [12, 4, 24]
print(test_1, "->", find_greatest_common_divisor(test_1))
print(test_2, "->", find_greatest_common_divisor(test_2))

哪些印刷品:

[2, 5] -> 1
[12, 4, 24] -> 4