Lista 1 MD2
Aluno: Gabriel Dantas
Matrícula: 231038072
RECURSÃO MATEMÁTICA
1. o cálculo de n! utilizando recursividade (exemplo teste 5!)
def fatorial(n):
if n == 0:
return 1
else:
return n*fatorial(n-1)
print(fatorial(5))
2. a sequência de Fibonacci
import math
def Fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci(n-1) + Fibonacci(n-2)
print(Fibonacci(8))
3. a impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
def imprimirNumeros(n):
if n == 0:
print(n)
else:
print(n)
imprimirNumeros(n-1)
imprimirNumeros(10)
4. um método recursivo que receba como entrada um número inteiro positivo n e retorne 1 + 2 + 3 + 4 + … + n
python
def SomaRecursiva(n):
if n == 0:
return 0
else:
return n + SomaRecursiva(n-1)
print(SomaRecursiva(6))
DIVISIBILIDADE
5. Algoritmo de Euclides para o cálculo do MDC
python
def Euclides(n, m):
if m == 0:
return n
else:
return Euclides(m, n % m)
print(Euclides(221, 136))
6. Calcular o MMC(a,b) a partir do MDC(a,b)
python
def mdc(n, m):
if m == 0:
return n
else:
return mdc(m, n % m)
def mmc(n, m):
return abs(n * m) // mdc(n, m)
print(mmc(221, 136))
ARITMÉTICA MODULAR
7. Tabela Z_n para adição modular e 8. Tabela Z_n para multiplicação modular
python
def tabela_modular(n, operacao):
tabela = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if operacao == '+':
tabela[i][j] = (i + j) % n
elif operacao == '*':
tabela[i][j] = (i * j) % n
else:
raise ValueError("Operação inválida. Use '+' para adição ou '*' para multiplicação.")
return tabela
def print_tabela(tabela):
for linha in tabela:
print(" ".join(map(str, linha)))
n = 4
print("Tabela Z_{} para Adição Modular:".format(n))
tabela_adicao = tabela_modular(n, '+')
print_tabela(tabela_adicao)
print("\nTabela Z_{} para Multiplicação Modular:".format(n))
tabela_multiplicacao = tabela_modular(n, '*')
print_tabela(tabela_multiplicacao)