Atividade 1 - Matemática Discreta
Atividade 1 - Matemática Discreta
Aluna: Danielle Soares da Silva
Matrícula: 231012058
1) Cálculo de n! utilizando recursividade
def fatorial(n):
if n < 0:
return "Não é possível definir fatorial para números negativos."
if n == 0 or n == 1:
return 1
else:
return n * fatorial(n - 1)
num = int(input("Digite um número: "))
resultado = fatorial(num)
print(resultado)
2) Sequência de Fibonacci
def fibonacci(n):
a0, a1, a2 = 0,1,0
if n <= 0:
return "Número inválido"
elif n == 1:
return a0;
elif n == 2:
return a1;
else:
for i in range(2,n+1):
a2 = a0+a1
a0 = a1;
a1 = a2;
return a2;
num = int(input("Digite um número: "));
resultado = fibonacci(num);
print(resultado)
3) Impressão recursiva dos números naturais de 1 a n
def impressaoRecursiva(a,b):
if (b==a):
return str(b)
return f"{a}-" + str(impressaoRecursiva(a+1,b));
nums = list(map(lambda x: int(x), input("Digite dois números no formato 'a b': ").split(' ')));
resultado = impressaoRecursiva(nums[0], nums[1]);
print(resultado)
4) Método recursivo que receba como entrada um número inteiro positivo n e retorne 1 + 2 + 3 + 4 + … + n
def impressaoRecursiva2(n):
if n==1:
return 1
elif n<1:
return "Insira um número > 1."
return n + impressaoRecursiva2(n-1)
num = int(input("Digite um número: "))
resultado = impressaoRecursiva2(num);
print(resultado)
5) Algoritmo de Euclides para o cálculo do MDC
def euclidesMDC(a,b):
r = a%b
if r!=0:
return euclidesMDC(b,r)
else:
return b
num = list(map(lambda x: int(x), input("Digite dois números no formato 'a b': ").split(' ')));
resultado = euclidesMDC(num[0], num[1]);
print(resultado)
6) Calcular o MMC(a,b) a partir do MDC(a,b)
def MMC(a, b):
if a <= 0 or b <= 0:
raise ValueError("Os números devem ser inteiros positivos.")
# primeira parte: MDC com o algoritmo de euclides
original_a = a
original_b = b
while b != 0:
a, b = b, a % b
mdc = a
# segunda parte: MMC com a fórmula mmc(a, b) = a * b / mdc(a, b)
mmc = (original_a * original_b) // mdc
return mmc
num = list(map(lambda x: int(x), input("Digite dois números no formato 'a b': ").split(' ')));
resultado = MMC(num[0], num[1]);
print(resultado)
7) Tabela Z_n para adição modular
def tabelaZnAdicao(zn):
matriz = [];
lista = list(map(str, range(zn)));
print(f"+ | {' '.join(lista)}")
print("-" * (zn * 2 + 4))
for i in range(0,zn):
matriz.append([]);
for j in range(0,zn):
operation = (i+j) % zn
matriz[i].append(operation);
linha = " ".join(list(map(str, matriz[i])));
print(f'{i} | {linha}')
tabelaZnAdicao(10)
8) Tabela Z_n para multiplicação modular
def tabelaZnMultiplicacao(zn):
matriz = [];
lista = list(map(str, range(zn)));
print(f"x | {' '.join(lista)}")
print("-" * (zn * 2 + 4))
for i in range(0,zn):
matriz.append([]);
for j in range(0,zn):
operation = (i*j) % zn
matriz[i].append(operation);
linha = " ".join(list(map(str, matriz[i])));
print(f'{i} | {linha}')
tabelaZnMultiplicacao(10)