OneCompiler

Lista 1 MD2

1. o calculo de n! utilizando recursividade

Código:

//  QUESTAO 01 
#include <stdio.h>

unsigned long long fat(int n) {
    if (n == 0 || n == 1) {
        return 1; 
    }
    return n * fat(n - 1); 
}

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

    if (numero < 0) {
        printf("fatorial inválido.\n");
    } else {
        printf("O fatorial de %d é %llu.\n", numero, fat(numero));
    }

    return 0;
}

2. a sequência de Fibonacci

Código:

//  QUESTAO 02
#include <stdio.h>
unsigned long long fib(int n) {
    if (n == 0) {
        return 0; 
    }
    if (n == 1) {
        return 1; 
    }

    return fib(n-1)+fib(n - 2); 
}

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

    if (numero < 0) {
        printf("fibonacci inválido.\n");
    } else {
        printf("O fibonacci do termo %d é %llu.\n", numero, fib(numero));
    }

    return 0;
}

3. a impressão recursiva dos números naturais de 1 a n

Código:

//  QUESTAO 03

#include <stdio.h>

void imprimerecursivo(int atual, int limite) {
    if (atual > limite) {
        return;
    }
    printf("%d ", atual);
    imprimerecursivo(atual + 1, limite);
}

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

    if (n < 1) {
        printf("Apenas números positivos\n");
    } else {
        printf("Números naturais de 1 a %d: ", n);
        imprimerecursivo(1, n);
        printf("\n");
    }

    return 0;
}

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

1+2+3+4+...+n

Código:

//  QUESTAO 04

#include <stdio.h>

int soma(int n){

    if(n==1){
        return n;
    }
    return n + soma(n-1);
}
int main(){

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

    if (n < 1) {
        printf("Apenas números positivos.\n");
    } else {
        printf("A soma de de 1 a %d é %d.\n", n, soma(n));
    }
    return 0; 
}

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

Código:


//  QUESTAO 05
#include <stdio.h>

int mdc(int a, int b) {
    if (b == 0){
        return a;
    }
    return mdc(b, a % b);
}

int main() {
    int n1, n2;
    printf("Digite dois números inteiros positivos: ");
    scanf("%d %d", &n1, &n2);

    if (n1 <= 0 || n2 <= 0) {
        printf("Apenas números inteiros positivos.\n");
    } else {
        printf("O MDC de %d e %d é %d.\n", n1, n2, mdc(n1, n2));
    }

    return 0;
}

6. Calcular o MMC a partir de MDC Algoritmo de Euclides

Código:


//  QUESTAO 06

#include <stdio.h>
int mdc(int a, int b) {
    if (b == 0){
        return a;
    }
    return mdc(b, a % b);
}
int mmc(int a, int b){
    return (a*b)/mdc(a, b); 
}
int main(){

    int n1, n2;
    printf("Digite dois números inteiros positivos: ");
    scanf("%d %d", &n1, &n2); 

    if (n1 <= 0 || n2 <= 0) {
        printf("Apenas números inteiros positivos.\n");
    } else {
        printf("O MMC de %d e %d é %d.\n", n1, n2, mmc(n1, n2));
    }

    return 0;
}

7. Tabela Z_n para adição modular

Código:


//  QUESTAO 07
#include <stdio.h>

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

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

    if (n > 0) addmodular(n);

    return 0;
}

8. Tabela Z_n para multiplicaçao modular

Código:


//  QUESTAO 08
#include <stdio.h>

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

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

    if (n > 0) multimodular(n);

    return 0;
}