2010-06-03 3 views
10

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

ответ

18

Согласно the 3.1.2 source code online, вот 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.

+0

+1. Definitive! –

+2

Если вы используете IPython, вы можете сразу увидеть исходный код, набрав 'gcd ??' – endolith

+0

Это на самом деле: 'import fractions', а затем:' fractions.gcd ?? 'в IPython. – syntagma

Смежные вопросы