OneCompiler

Lista 01- MD2

Recursão Matemática

  1. o cálculo de n! utilizando recursividade (exemplo teste 5!)
def fatorial(n):
    if n == 0 or n == 1:  # Base da recursão
        return 1
    return n * fatorial(n - 1)  # Passo recursivo

if __name__ == "__main__":
    # Teste com entrada fixa
    resultado = fatorial(5)
    print(resultado)  # Saída: 120

  1. a sequência de Fibonacci
def fibonacci(n):
    if n == 0:  
        return 0
    elif n == 1:
        return 1
    return fibonacci(n - 1) + fibonacci(n - 2)  

if __name__ == "__main__":
    # Teste com uma sequência fixa
    for i in range(10):
        print(fibonacci(i), end=" ")  # Saída esperada: 0 1 1 2 3 5 8 13 21 34
  1. a impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
def imprimir_naturais(n):
    if n == 0:
        return
    imprimir_naturais(n - 1)
    print(n, end=" ")

# Teste
imprimir_naturais(10)  # Saída: 1 2 3 4 5 6 7 8 9 10
  1. um método recursivo que receba como entrada um número inteiro positivo n e retorne
    1 + 2 + 3 + 4 + … + n
def soma_recursiva(n):
    if n == 0:
        return 0
    return n + soma_recursiva(n - 1)

if __name__ == "__main__":
    try:
        n = int(input("Digite um número inteiro positivo: "))
        if n < 0:
            print("Por favor, insira um número positivo.")
        else:
            print(f"A soma dos números de 1 a {n} é {soma_recursiva(n)}")
    except ValueError:
        print("Por favor, insira um número inteiro válido.")

Divisibilidade

  1. Algoritmo de Euclides para o cálculo do MDC
def mdc(a, b):
    if b == 0: 
        return a
    return mdc(b, a % b)  

if __name__ == "__main__":
    try:
        # Entrada dos valores
        a = int(input("Digite o primeiro número (a): "))
        b = int(input("Digite o segundo número (b): "))
        
        if a < 0 or b < 0:
            print("Por favor, insira números inteiros positivos.")
        else:
            print(f"O MDC de ({a},{b})é {mdc(a, b)}")
    except ValueError:
        print("Por favor, insira números inteiros válidos.")
  1. Calcular o MMC(a,b) a partir do MDC(a,b)
def mdc(a, b):
    if b == 0:  
        return a
    return mdc(b, a % b)  

def mmc(a, b):
    return abs(a * b) // mdc(a, b)  # Fórmula do MMC usando o MDC

if __name__ == "__main__":
    try:
        
        a = int(input("Digite o primeiro número (a): "))
        b = int(input("Digite o segundo número (b): "))
        
        if a <= 0 or b <= 0:
            print("Por favor, insira números inteiros positivos.")
        else:
            print(f"O MMC de ({a} , {b}) é {mmc(a, b)}")
    except ValueError:
        print("Por favor, insira números inteiros válidos.")

ARITMÉTICA MODULAR

  1. Tabela Z_n para adição modular
def tabela_adicao_modular(n):
    tabela = [[(i + j) % n for j in range(n)] for i in range(n)]
    return tabela

if __name__ == "__main__":
    try:
        n = int(input("Digite o valor de n para a tabela Z_n: "))
        if n <= 0:
            print("Por favor, insira um número inteiro positivo.")
        else:
            tabela = tabela_adicao_modular(n)
            print(f"Tabela de adição modular Z_{n}:")
            for linha in tabela:
                print(linha)
    except ValueError:
        print("Por favor, insira um número inteiro válido.")
  1. Tabela Z_n para multiplicação modular
def tabela_multiplicacao_modular(n):
    tabela = [[(i * j) % n for j in range(n)] for i in range(n)]
    return tabela

if __name__ == "__main__":
    try:
        n = int(input("Digite o valor de n para a tabela Z_n: "))
        if n <= 0:
            print("Por favor, insira um número inteiro positivo.")
        else:
            tabela = tabela_multiplicacao_modular(n)
            print(f"Tabela de multiplicação modular Z_{n}:")
            for linha in tabela:
                print(linha)
    except ValueError:
        print("Por favor, insira um número inteiro válido.")