def gcd(a, b):
    if a == b:
        return a
    elif a > b:
        return gcd(a-b, b)
    else:  # a < b
        return gcd(a, b-a)


print("gcd a=7, b=3. Наибольший общий делитель равен ", gcd(7, 3))
print("gcd a=54, b=24. Наибольший общий делитель равен ", gcd(54, 24))
print("gcd a=4, b=11. Наибольший общий делитель равен ", gcd(4, 11))
print("gcd a=1071, b=462. Наибольший общий делитель равен ", gcd(1071, 462))


def gcd2(a, b):
    if b == 0:
        return a
    else:
        return gcd2(b, a % b)


print("gcd2 a=7, b=3. Наибольший общий делитель равен ", gcd2(7, 3))
print("gcd2 a=54, b=24. Наибольший общий делитель равен ", gcd2(54, 24))
print("gcd2 a=4, b=11. Наибольший общий делитель равен ", gcd2(4, 11))
print("gcd2 a=1071, b=462. Наибольший общий делитель равен ", gcd2(1071, 462))


def gcd3(a, b):
    return a if b == 0 else gcd3(b, a % b)


print("gcd3 a=7, b=3. Наибольший общий делитель равен ", gcd3(7, 3))
print("gcd3 a=54, b=24. Наибольший общий делитель равен ", gcd3(54, 24))
print("gcd3 a=4, b=11. Наибольший общий делитель равен ", gcd3(4, 11))
print("gcd3 a=1071, b=462. Наибольший общий делитель равен ", gcd3(1071, 462))
