Какой алгоритм использует Python в fractions.gcd ()? - PullRequest
11 голосов
/ 03 июня 2010

Я использую модуль фракций в Python v3.1 для вычисления наибольшего общего делителя. Я хотел бы знать, какой алгоритм используется. Я предполагаю евклидов метод, но хотел бы быть уверен. Документы (http://docs.python.org/py3k/library/fractions.html?highlight=fractions.gcd#fractions.gcd) не помогают. Кто-нибудь может подсказать мне?

Ответы [ 2 ]

19 голосов
/ 03 июня 2010

Согласно исходному коду 3.1.2 онлайн , здесь gcd, как определено в 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 голос
/ 05 февраля 2019

От фракции питона

"Не рекомендуется с версии 3.5: используйте math.gcd () вместо этого."

Я тоже искал алгоритм. Я надеюсь, что это помогло.

...