Lista de Exercícios - Luan Mateus Cesar Duarte


  • Exercícios feitos por Luan Mateus Cesar Duarte - 211041221

1 - Fatorial usando recursividade

#include <stdio.h>

int fatorial (int n) {
    if (n == 0) {
        return 1;
    }
    return n * fatorial(n-1);
}

int main()
{
    int n;
    
    printf("Digite um número para fatoração: \n");
    scanf("%d", &n);
    
    if(n < 0) {
        printf("Só aceita números positivos.\n");
    } else {
        printf("O fatorial é: %d\n", fatorial(n));
    }

    return 0;
}

2 - Sequência de Fibonacci usando recursividade

#include <stdio.h>

int fibonacci (int termo) {
    if (termo == 0) {
        return 0;
    } else if (termo == 1) {
        return 1;
    } else {
        return fibonacci(termo - 1) + fibonacci(termo - 2);
    }
}

int main()
{
    int termo;
    
    printf("Digite o número de termos da sequência de Fibonacci (excluindo o 0): \n");
    scanf("%d", &termo);
    
    for (int i = 1; i <= termo; i++) {
        printf("%d ", fibonacci(i));
    }
    printf("\n");

    return 0;
}

3 - Impressão recursiva de 1 a n

#include <stdio.h>

int imprimirnaturais(int n) {
    if (n == 1) printf("%d\n", n);
    else {
        imprimirnaturais(n - 1);
        printf("%d\n", n);
    }
}

int main()
{
    int n;
    printf("Escolha o valor de n: ");
    scanf("%d", &n);
    
    imprimirnaturais(n);

    return 0;
}

4 - Método recursivo

#include <stdio.h>

int imprimirsequencia(int n) {
    if(n == 1) {
        printf("1");
        return 1;
    } else {
        int soma = imprimirsequencia(n - 1);
        printf(" + %d", n);
        return soma + n;
    }
}

int main()
{
    int n;
    printf("Escolha o valor de n: ");
    scanf("%d", &n);
    
    if (n <= 0) {
        printf("Insira um número inteiro positivo.\n");
        return 1;
    }
    
    printf("A sequência é: ");;
    int soma = imprimirsequencia(n);
    printf("\nSoma: %d\n", soma);

    return 0;
}

5 - Algoritmo de Euclides (MDC)

#include <stdio.h>

int calculaMDC(int a, int b) {
    while (b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main() {
    int num1, num2;

    printf("Digite dois números inteiros: ");
    scanf("%d %d", &num1, &num2);

    int mdc = calculaMDC(num1, num2);

    printf("O MDC de %d e %d é: %d\n", num1, num2, mdc);

    return 0;
}

6 - MMC por MDC

#include <stdio.h>

int calculaMDC(int a, int b) {
    while (b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int calculaMMC(int a, int b) {
    int mdc = calculaMDC(a, b);
    return (a/mdc) * b;
}

int main() {
    int num1, num2;

    printf("Digite dois números inteiros: ");
    scanf("%d %d", &num1, &num2);
    
    if (num1 <= 0 || num2 <= 0) {
        printf("Insira números inteiros positivos.\n");
        return 1;
    }

    int mdc = calculaMDC(num1, num2);
    int mmc = calculaMMC(num1, num2);

    printf("O MMC de %d e %d, utilizando o MDC(%d) é: %d\n", num1, num2, mdc, mmc);

    return 0;
}

7 - Tabela Z_n para adição modular

#include <stdio.h>

int tabelaAdicao(int num1) {
    int tabela[num1][num1];
    
    for(int i = 0; i < num1; i++) {
        for(int j = 0; j < num1; j++) {
            tabela[i][j] = (i + j) % num1;
        }
    }
    
    printf("Tabela de Adição Modular para: Z_%d:\n", num1);
    printf("+   ");
    for(int i =0; i < num1; i++) {
        printf("%d ", i);
    }
    printf("\n");
    
    for (int i = 0; i < num1; i++) {
        printf("%d | ", i);
        for (int j = 0; j < num1; j++) {
            printf("%d ", tabela[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int num1;

    printf("Digite o valor para gerar a tabela Z_n: ");
    scanf("%d", &num1);

    tabelaAdicao(num1);

    return 0;
}

8 - Tabela Z_n para multiplicação modular

#include <stdio.h>

int tabelaMultiplicacao(int num1) {
    int tabela[num1][num1];
    
    for(int i = 0; i < num1; i++) {
        for(int j = 0; j < num1; j++) {
            tabela[i][j] = (i * j) % num1;
        }
    }
    
    printf("Tabela de Adição Modular para: Z_%d:\n", num1);
    printf("*   ");
    for(int i =0; i < num1; i++) {
        printf("%d ", i);
    }
    printf("\n");
    
    for (int i = 0; i < num1; i++) {
        printf("%d | ", i);
        for (int j = 0; j < num1; j++) {
            printf("%d ", tabela[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int num1;

    printf("Digite o valor para gerar a tabela Z_n: ");
    scanf("%d", &num1);

    tabelaMultiplicacao(num1);

    return 0;
}