OneCompiler

Lista MD2

###1. o cálculo de n! utilizando recursividade (exemplo teste 5!)

#include <stdio.h>
int resultado[100];
int fatorial(int n){
    if (n == 0 || n == 1)
    return 1;
    resultado[n] = n*fatorial(n-1);
    return resultado[n];
}

int main(){
    int n;
    scanf("%d", &n);
    printf("%d", fatorial(n));
}

###2. a sequência de Fibonacci

#include <stdio.h>

long int memoria[1000] = {0}; 

long int fibonacci(int n) {
    if (n == 1 || n == 2)
        return 1;
    if (memoria[n] != 0)
        return memoria[n];
    memoria[n] = fibonacci(n - 2) + fibonacci(n - 1);
    return memoria[n];
}

void imprimeFibonacci(int n) {
    printf("A sequencia de Fibonacci ate o numero %d: \n", n);
    for (int i = 1; i <= n; i++) {
        printf("%ld ", fibonacci(i));
    }
    printf("\n");
}

int main() {
    int n;

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

    if (n <= 0) {
        return 1;
    }

    imprimeFibonacci(n);
    return 0;
}

###3. a impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)

#include <stdio.h>

void impressao(int num){
    if(num <= 0) return ;
    
    impressao(num-1);
    printf("%d\n", num);
}

int main(){
    int n;
    scanf("%d", &n);
    impressao(n);
}

###4. um método recursivo que receba como entrada um número inteiro positivo n e retorne

#include <stdio.h>

int soma(int n){
    if(n==0) return 0;
    return n + soma(n-1);
}
int main(){
    int n;
    scanf("%d", &n);
    printf("%d", soma(n));
}

###5. Algoritmo de Euclides para o cálculo do MDC

#include <stdio.h>

int algoritmoEuclides(int n1, int n2) {
    if (n2 > n1) {
        algoritmoEuclides(n2, n1);
    }

    int resto;
    while (n2 != 0) {
        resto = n1 % n2; // Calcula o resto da divisão
        n1 = n2;         // Atualiza n1 para n2
        n2 = resto;      // Atualiza n2 para o resto
    }
    return n1; 
}

###6. Calcular o MMC(a,b) a partir do MDC(a,b)
A função algoritmoEuclides foi usada no mesmo código da do MMC

int mmc(int a, int b){
    int d = algoritmoEuclides(a,b);
    int mmc = (a*b)/d;
    return mmc;
}

int main() {
    int n1, n2;

    
    printf("Digite dois numeros inteiros: \n");
    scanf("%d%d", &n1, &n2);

    
    printf("MDC: %d\n", algoritmoEuclides(n1, n2));
    printf("MMC: %d\n", mmc(n1,n2));

    return 0;
}

###7. Tabela Z_n para adição modular

#include <stdio.h>

void tabelaModular(int n) {
    printf("   "); 
    for (int j = 0; j < n; j++) {
        printf("%d ", j);
    }
    printf("\n");

    
    printf(" + ");
    for (int j = 0; j < n; j++) {
        printf("--");
    }
    printf("\n");

    
    for (int i = 0; i < n; i++) {
        printf("%d |", i); 
        for (int j = 0; j < n; j++) {
            printf("%d ", (i + j) % n); 
        }
        printf("\n");
    }
}

int main() {
    int n;
    printf("Digite o tamanho da tabela (n): ");
    scanf("%d", &n);
    tabelaModular(n);
    return 0;
}

###8. Tabela Z_n para multiplicação modular

#include <stdio.h>

void tabelaModular(int n) {
    
    printf("   "); 
    for (int j = 0; j < n; j++) {
        printf("%d ", j);
    }
    printf("\n");

    
    printf(" x ");
    for (int j = 0; j < n; j++) {
        printf("--");
    }
    printf("\n");

    
    for (int i = 0; i < n; i++) {
        printf("%d |", i); 
        for (int j = 0; j < n; j++) {
            printf("%d ", (i * j) % n); 
        }
        printf("\n");
    }
}

int main() {
    int n;
    printf("Digite o tamanho da tabela (n): ");
    scanf("%d", &n);
    tabelaModular(n);
    return 0;
}