- Exercícios feitos por Luan Mateus Cesar Duarte - 211041221
1 - Fatorial usando recursividade
#include <stdio.h>
int fatorial (int n) {
if (n == 0) {
return 1;
}
return n * fatorial(n-1);
}
int main()
{
int n;
printf("Digite um número para fatoração: \n");
scanf("%d", &n);
if(n < 0) {
printf("Só aceita números positivos.\n");
} else {
printf("O fatorial é: %d\n", fatorial(n));
}
return 0;
}
2 - Sequência de Fibonacci usando recursividade
#include <stdio.h>
int fibonacci (int termo) {
if (termo == 0) {
return 0;
} else if (termo == 1) {
return 1;
} else {
return fibonacci(termo - 1) + fibonacci(termo - 2);
}
}
int main()
{
int termo;
printf("Digite o número de termos da sequência de Fibonacci (excluindo o 0): \n");
scanf("%d", &termo);
for (int i = 1; i <= termo; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
3 - Impressão recursiva de 1 a n
#include <stdio.h>
int imprimirnaturais(int n) {
if (n == 1) printf("%d\n", n);
else {
imprimirnaturais(n - 1);
printf("%d\n", n);
}
}
int main()
{
int n;
printf("Escolha o valor de n: ");
scanf("%d", &n);
imprimirnaturais(n);
return 0;
}
4 - Método recursivo
#include <stdio.h>
int imprimirsequencia(int n) {
if(n == 1) {
printf("1");
return 1;
} else {
int soma = imprimirsequencia(n - 1);
printf(" + %d", n);
return soma + n;
}
}
int main()
{
int n;
printf("Escolha o valor de n: ");
scanf("%d", &n);
if (n <= 0) {
printf("Insira um número inteiro positivo.\n");
return 1;
}
printf("A sequência é: ");;
int soma = imprimirsequencia(n);
printf("\nSoma: %d\n", soma);
return 0;
}
5 - Algoritmo de Euclides (MDC)
#include <stdio.h>
int calculaMDC(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int main() {
int num1, num2;
printf("Digite dois números inteiros: ");
scanf("%d %d", &num1, &num2);
int mdc = calculaMDC(num1, num2);
printf("O MDC de %d e %d é: %d\n", num1, num2, mdc);
return 0;
}
6 - MMC por MDC
#include <stdio.h>
int calculaMDC(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int calculaMMC(int a, int b) {
int mdc = calculaMDC(a, b);
return (a/mdc) * b;
}
int main() {
int num1, num2;
printf("Digite dois números inteiros: ");
scanf("%d %d", &num1, &num2);
if (num1 <= 0 || num2 <= 0) {
printf("Insira números inteiros positivos.\n");
return 1;
}
int mdc = calculaMDC(num1, num2);
int mmc = calculaMMC(num1, num2);
printf("O MMC de %d e %d, utilizando o MDC(%d) é: %d\n", num1, num2, mdc, mmc);
return 0;
}
7 - Tabela Z_n para adição modular
#include <stdio.h>
int tabelaAdicao(int num1) {
int tabela[num1][num1];
for(int i = 0; i < num1; i++) {
for(int j = 0; j < num1; j++) {
tabela[i][j] = (i + j) % num1;
}
}
printf("Tabela de Adição Modular para: Z_%d:\n", num1);
printf("+ ");
for(int i =0; i < num1; i++) {
printf("%d ", i);
}
printf("\n");
for (int i = 0; i < num1; i++) {
printf("%d | ", i);
for (int j = 0; j < num1; j++) {
printf("%d ", tabela[i][j]);
}
printf("\n");
}
}
int main() {
int num1;
printf("Digite o valor para gerar a tabela Z_n: ");
scanf("%d", &num1);
tabelaAdicao(num1);
return 0;
}
8 - Tabela Z_n para multiplicação modular
#include <stdio.h>
int tabelaMultiplicacao(int num1) {
int tabela[num1][num1];
for(int i = 0; i < num1; i++) {
for(int j = 0; j < num1; j++) {
tabela[i][j] = (i * j) % num1;
}
}
printf("Tabela de Adição Modular para: Z_%d:\n", num1);
printf("* ");
for(int i =0; i < num1; i++) {
printf("%d ", i);
}
printf("\n");
for (int i = 0; i < num1; i++) {
printf("%d | ", i);
for (int j = 0; j < num1; j++) {
printf("%d ", tabela[i][j]);
}
printf("\n");
}
}
int main() {
int num1;
printf("Digite o valor para gerar a tabela Z_n: ");
scanf("%d", &num1);
tabelaMultiplicacao(num1);
return 0;
}