OneCompiler

Lista 1 de MD2

197

Questão 1

 include <stdio.h>

// Função recursiva para calcular o fatorial

int fatorial(int n) {
    if (n <= 1) // Caso base: fatorial de 0 ou 1 é 1
        return 1;
    else
        return n * fatorial(n - 1); // Passo recursivo
}

int main() {
    int n;

    printf("Digite um numero para calcular o fatorial: ");
    scanf("%d", &n);

    // Chama a função fatorial e exibe o resultado
    printf("O fatorial de %d é %d\n", n, fatorial(n));

    return 0;
} 

Questão 2

 #include <stdio.h>

// Função recursiva para calcular o enésimo número de Fibonacci
int fibonacci(int n) {
    if (n <= 1) // Caso base: Fibonacci de 0 é 0 e de 1 é 1
        return n;
    else
        return fibonacci(n - 1) + fibonacci(n - 2); // Passo recursivo
}

int main() {
    int n;

    printf("Digite a posição desejada na sequência de Fibonacci: ");
    scanf("%d", &n);

    // Chama a função Fibonacci e exibe o resultado
    printf("O %dº número na sequência de Fibonacci é %d\n", n, fibonacci(n));

    return 0;
} 

Questão 3

 #include <stdio.h>

// Função recursiva para imprimir números de 1 a n
void imprimirNaturais(int n) {
    if (n > 0) {
        imprimirNaturais(n - 1); // Chama a função recursivamente com n-1
        printf("%d ", n); // Imprime o número após a chamada recursiva
    }
}

int main() {
    int n;

    printf("Digite um número: ");
    scanf("%d", &n);

    printf("Números naturais de 1 a %d: ", n);
    imprimirNaturais(n); // Chama a função para imprimir os números
    printf("\n");

    return 0;
} 

Questão 4

 #include <stdio.h>

// Função recursiva para calcular a soma de 1 até n
int somaNaturais(int n) {
    if (n == 1) // Caso base: a soma de 1 é 1
        return 1;
    else
        return n + somaNaturais(n - 1); // Passo recursivo
}

int main() {
    int n;

    printf("Digite um número: ");
    scanf("%d", &n);

    // Chama a função somaNaturais e exibe o resultado
    printf("A soma dos números de 1 a %d é %d\n", n, somaNaturais(n));

    return 0;
} 

Questão 5

 #include <stdio.h>

// Função recursiva para calcular o MDC usando o Algoritmo de Euclides
int mdc(int a, int b) {
    if (b == 0) // Caso base: se b é 0, o MDC é a
        return a;
    else
        return mdc(b, a % b); // Chama a função com b e o resto da divisão de a por b
}

int main() {
    int a, b;

    printf("Digite dois números inteiros positivos: ");
    scanf("%d %d", &a, &b);

    // Chama a função mdc e exibe o resultado
    printf("O MDC de %d e %d é %d\n", a, b, mdc(a, b));

    return 0;
} 

Questão 6

 #include <stdio.h>

// Função para calcular o MDC usando divisibilidade e o Algoritmo de Euclides
int mdc(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// Função para calcular o MMC a partir do MDC usando divisibilidade
int mmc(int a, int b) {
    return (a * b) / mdc(a, b);
}

int main() {
    int a, b;

    printf("Digite dois números inteiros positivos: ");
    scanf("%d %d", &a, &b);

    // Calcula e exibe o MMC
    printf("O MMC de %d e %d é %d\n", a, b, mmc(a, b));

    return 0;
}
 

Questão 7

 #include <stdio.h>

// Função para exibir a Tabela Z_n de adição modular
void tabela_zn_adicao(int n) {
    printf("Tabela Z_%d para adição modular:\n", n);
    
    // Imprime o cabeçalho da tabela
    printf("    ");
    for (int i = 0; i < n; i++) {
        printf("%4d", i);
    }
    printf("\n");

    // Imprime a linha de separação
    printf("    ");
    for (int i = 0; i < n; i++) {
        printf("----");
    }
    printf("\n");

    // Calcula e imprime cada linha da tabela
    for (int i = 0; i < n; i++) {
        printf("%2d |", i); // Imprime o índice da linha
        for (int j = 0; j < n; j++) {
            printf("%4d", (i + j) % n); // Calcula a adição modular e imprime
        }
        printf("\n");
    }
}

int main() {
    int n;

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

    // Gera e exibe a Tabela Z_n para adição modular
    tabela_zn_adicao(n);

    return 0;
}
 

Questão 8

 #include <stdio.h>

// Função para exibir a Tabela Z_n de multiplicação modular
void tabela_zn_multiplicacao(int n) {
    printf("Tabela Z_%d para multiplicação modular:\n", n);
    
    // Imprime o cabeçalho da tabela
    printf("    ");
    for (int i = 0; i < n; i++) {
        printf("%4d", i);
    }
    printf("\n");

    // Imprime a linha de separação
    printf("    ");
    for (int i = 0; i < n; i++) {
        printf("----");
    }
    printf("\n");

    // Calcula e imprime cada linha da tabela
    for (int i = 0; i < n; i++) {
        printf("%2d |", i); // Imprime o índice da linha
        for (int j = 0; j < n; j++) {
            printf("%4d", (i * j) % n); // Calcula a multiplicação modular e imprime
        }
        printf("\n");
    }
}

int main() {
    int n;

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

    // Gera e exibe a Tabela Z_n para multiplicação modular
    tabela_zn_multiplicacao(n);

    return 0;
}