OneCompiler

Atividades de Programação para P1 - MD2

Nome: Gustavo Abrantes de Souza

Matrícula: 212008160

Disciplina: MD2 -> Atividade para P1

Códigos Recursão

1) Fatorial:

#include <stdio.h>
int fatorial(int n){
    if(n == 0){
        return 1;
    } else {
        return n * fatorial(n -1);
    }
}

int main(){
    int n;
    printf("Digite um numero inteiro: ");
    scanf("%d",&n);

    printf("Fatorial de %d e: %d\n",n,fatorial(n));
    return 0;
}

2) Fibonacci:

#include <stdio.h>
int fibonacci(int n){
    // casos bases
    if(n == 0){
        return 0;
    } else if(n == 1){
        return 1;
    } 
    // Caso em que n é != de 0 e 1, e o fibonacci é calculado
    else {
        return fibonacci(n-1) + fibonacci(n-2);
    }
}

int main(){
    int n;
    printf("Digite um valor inteiro: ");
    scanf("%d", &n);
    printf("Fibonacci de %d e: %d\n", n, fibonacci(n));
    return 0;
}

3) Impressão Naturais de 1 a n:

#include <stdio.h>
void imprimiNaturais(int n){
    if(n > 0){
        imprimiNaturais(n-1);
        printf("%d ", n);
    } 
}
int main (){
    int n;
    printf("Digite um numero inteiro: ");
    scanf("%d",&n);
    imprimiNaturais(n);
    return 0;
}

4) Impressão de 1 + n:

#include <stdio.h>
int imprime(int n){
    if(n == 1){
        printf("%d ", n);
        return n;
    }
    int soma = imprime(n-1);
    printf(" + %d", n);
    return soma + n;
    
}

int main(){
    int n;
    printf("Digite um numero inteiro: ");
    scanf("%d", &n);
    printf("\nSoma dos numeros de 1 a %d: %d\n", n, imprime(n));
    return 0;
}

Códigos de Divisibilidade

5) MDC com algoritmo de Euclides:

#include <stdio.h>

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

int main(){
    int a, b;

    printf("Digite os dois valores: ");
    scanf("%d %d", &a,&b);
    printf("Mdc (%d , %d) -> mdc de euclides = %d\n",a,b,mdcEuclides(a,b));
    return 0;
}

6) MMC(a,b) a partir de MDC(a,b):

#include <stdio.h>

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

int mmc (int a, int b){
    return (a * b) / mdcEuclides(a,b);
}

int main(){
    int a, b;
    printf("Digite dois valores inteiros: ");
    scanf("%d %d", &a, &b);
    printf("\nMDC (%d , %d) =  %d\n", a, b, mdcEuclides(a, b));
    printf("MMC (%d , %d) =  %d\n\n", a, b, mmc(a, b));

    return 0;
}

Códigos de Aritmética Modular:

7) Tabela de Z_n para adição modular:

#include <stdio.h>

int main(){
    int n;
    printf("Digite um numero inteiro: ");
    scanf("%d", &n);

    printf("Tabela de Z%d para soma modular: \n\n", n);
    printf(" +");
    printf(" ");

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

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

    // Tabela
    for(int i = 0; i < n; i++){
        printf("%2d", i);
        for(int j = 0; j < n; j++){
            printf("%4d", (i + j) % n);
        }
        printf("\n");
    }
    return 0;
}

8) Tabela Z_n para multiplicação modular:

#include <stdio.h>
int main(){
    int n;
    printf("Digite um numero inteiro: ");
    scanf("%d", &n);

    printf("Tabela Z%d para multiplicacao modular:\n\n", n);
    printf(" X");
    printf("  ");

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

    printf("\n");

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

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