OneCompiler

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)