Python中使用了什么算法fractions.gcd()?

时间:2010-06-03 00:43:00

标签: python fractions greatest-common-divisor

我正在使用Python v3.1中的分数模块来计算最大的公约数。我想知道使用什么算法。我猜测欧几里德方法,但我想确定。文档(http://docs.python.org/py3k/library/fractions.html?highlight=fractions.gcd#fractions.gcd)没有帮助。有人能告诉我吗?

2 个答案:

答案 0 :(得分:19)

根据the 3.1.2 source code onlinegcd中定义Python-3.1.2/Lib/fractions.py

def gcd(a, b):
    """Calculate the Greatest Common Divisor of a and b.

    Unless b==0, the result will have the same sign as b (so that when
    b is divided by it, the result comes out positive).
    """
    while b:
        a, b = b, a%b
    return a

是的,这是欧几里德算法,用纯Python编写。

答案 1 :(得分:1)

来自fractions python

“自版本3.5起不推荐使用:请使用math.gcd()。”

我也在寻找算法。希望对您有所帮助。