# Calcula o factorial de n, baseado na recorrencia n! = n*(n-1)!. # Mas não termina! Detete a causa e corrija o erro. def fact(n): if n == 0: return 1 return n * fact(n - 1) # Calcula o maximo divisor comum entre a e b. # Baseia-se no algoritmo de Euclides. # Mas não termina! Detete a causa e corrija o erro. def gcd(a, b): assert a > 0 and b > 0 if a % b == 0: return b return gcd(b, a % b) def main(): print(fact(4)) # 24 print(fact(5)) # 120 x = 2 * 27 * 53 * 61 y = 2 * 2 * 17 * 23 * 53 print(x, y, gcd(x, y)) assert gcd(x, y) == 2 * 53 if __name__ == "__main__": main()