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;
}