НОД Python — ошибки

У меня проблема с моим кодом, целью которого является найти НОД двух входов. Когда я пытаюсь запустить модуль, он говорит мне, что «gcd» не определен.

def GCD(12,4):
    gcd = 1
    for i in range(2, max(12,4)/2):
        if((12 % i == 0) and (4 % i == 0)):
            gcd = i
    return gcd

person Tony    schedule 25.03.2015    source источник
comment
Чтобы вы знали, Python поставляется с модулем Fractions. Включает метод gcd.   -  person dawg    schedule 28.03.2015


Ответы (2)


Вы не вызываете функцию GCF. Вы только что определили свою функцию. Вам нужно добавить строку

gcf = GCF(a,b)

после места, где вы принимаете ввод. Это после b = int(input('denomenator: '))

Редактировать:

Измените операторы ввода на

a = float(input('numerator: '))
b = float(input('denomenator: '))
person Bhargav Rao    schedule 25.03.2015
comment
Хорошо, я сделал это, но теперь он говорит TypeError: объект 'float' не может быть интерпретирован как целое число - person Tony; 25.03.2015

Вы можете использовать алгоритм деления Евклида, чтобы найти НОД за меньшее время. Возьмите числа с плавающей запятой в a и b.

def gcd(a,b):
    c = 1
    a,b = max(a,b),min(a,b)
    while c != 0:
        c = a%b
        a,b = b,c
    return a
print gcd(12,5)
person Praveen Dinelka    schedule 11.02.2018