Я использую модуль фракций в Python v3.1 для вычисления наибольшего общего делителя. Я хотел бы знать, какой алгоритм используется. Я догадываюсь об эвклидовом методе, но хочу быть уверенным. Документы (http://docs.python.org/py3k/library/fractions.html?highlight=fractions.gcd#fractions.gcd) не помогают. Может ли кто-нибудь понять меня?
Какой алгоритм использует Python во фракциях .gcd()?
Ответ 1
В соответствии с исходный код 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.
Ответ 2
Из дроби питона
"Устаревшее с версии 3.5: используйте взамен math.gcd()."
Я тоже искал алгоритм. Надеюсь, это помогло.