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