Questão 1
include <stdio.h>
// Função recursiva para calcular o fatorial
int fatorial(int n) {
if (n <= 1) // Caso base: fatorial de 0 ou 1 é 1
return 1;
else
return n * fatorial(n - 1); // Passo recursivo
}
int main() {
int n;
printf("Digite um numero para calcular o fatorial: ");
scanf("%d", &n);
// Chama a função fatorial e exibe o resultado
printf("O fatorial de %d é %d\n", n, fatorial(n));
return 0;
}
Questão 2
#include <stdio.h>
// Função recursiva para calcular o enésimo número de Fibonacci
int fibonacci(int n) {
if (n <= 1) // Caso base: Fibonacci de 0 é 0 e de 1 é 1
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2); // Passo recursivo
}
int main() {
int n;
printf("Digite a posição desejada na sequência de Fibonacci: ");
scanf("%d", &n);
// Chama a função Fibonacci e exibe o resultado
printf("O %dº número na sequência de Fibonacci é %d\n", n, fibonacci(n));
return 0;
}
Questão 3
#include <stdio.h>
// Função recursiva para imprimir números de 1 a n
void imprimirNaturais(int n) {
if (n > 0) {
imprimirNaturais(n - 1); // Chama a função recursivamente com n-1
printf("%d ", n); // Imprime o número após a chamada recursiva
}
}
int main() {
int n;
printf("Digite um número: ");
scanf("%d", &n);
printf("Números naturais de 1 a %d: ", n);
imprimirNaturais(n); // Chama a função para imprimir os números
printf("\n");
return 0;
}
Questão 4
#include <stdio.h>
// Função recursiva para calcular a soma de 1 até n
int somaNaturais(int n) {
if (n == 1) // Caso base: a soma de 1 é 1
return 1;
else
return n + somaNaturais(n - 1); // Passo recursivo
}
int main() {
int n;
printf("Digite um número: ");
scanf("%d", &n);
// Chama a função somaNaturais e exibe o resultado
printf("A soma dos números de 1 a %d é %d\n", n, somaNaturais(n));
return 0;
}
Questão 5
#include <stdio.h>
// Função recursiva para calcular o MDC usando o Algoritmo de Euclides
int mdc(int a, int b) {
if (b == 0) // Caso base: se b é 0, o MDC é a
return a;
else
return mdc(b, a % b); // Chama a função com b e o resto da divisão de a por b
}
int main() {
int a, b;
printf("Digite dois números inteiros positivos: ");
scanf("%d %d", &a, &b);
// Chama a função mdc e exibe o resultado
printf("O MDC de %d e %d é %d\n", a, b, mdc(a, b));
return 0;
}
Questão 6
#include <stdio.h>
// Função para calcular o MDC usando divisibilidade e o Algoritmo de Euclides
int mdc(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// Função para calcular o MMC a partir do MDC usando divisibilidade
int mmc(int a, int b) {
return (a * b) / mdc(a, b);
}
int main() {
int a, b;
printf("Digite dois números inteiros positivos: ");
scanf("%d %d", &a, &b);
// Calcula e exibe o MMC
printf("O MMC de %d e %d é %d\n", a, b, mmc(a, b));
return 0;
}
Questão 7
#include <stdio.h>
// Função para exibir a Tabela Z_n de adição modular
void tabela_zn_adicao(int n) {
printf("Tabela Z_%d para adição modular:\n", n);
// Imprime o cabeçalho da tabela
printf(" ");
for (int i = 0; i < n; i++) {
printf("%4d", i);
}
printf("\n");
// Imprime a linha de separação
printf(" ");
for (int i = 0; i < n; i++) {
printf("----");
}
printf("\n");
// Calcula e imprime cada linha da tabela
for (int i = 0; i < n; i++) {
printf("%2d |", i); // Imprime o índice da linha
for (int j = 0; j < n; j++) {
printf("%4d", (i + j) % n); // Calcula a adição modular e imprime
}
printf("\n");
}
}
int main() {
int n;
printf("Digite o valor de n para a tabela Z_n: ");
scanf("%d", &n);
// Gera e exibe a Tabela Z_n para adição modular
tabela_zn_adicao(n);
return 0;
}
Questão 8
#include <stdio.h>
// Função para exibir a Tabela Z_n de multiplicação modular
void tabela_zn_multiplicacao(int n) {
printf("Tabela Z_%d para multiplicação modular:\n", n);
// Imprime o cabeçalho da tabela
printf(" ");
for (int i = 0; i < n; i++) {
printf("%4d", i);
}
printf("\n");
// Imprime a linha de separação
printf(" ");
for (int i = 0; i < n; i++) {
printf("----");
}
printf("\n");
// Calcula e imprime cada linha da tabela
for (int i = 0; i < n; i++) {
printf("%2d |", i); // Imprime o índice da linha
for (int j = 0; j < n; j++) {
printf("%4d", (i * j) % n); // Calcula a multiplicação modular e imprime
}
printf("\n");
}
}
int main() {
int n;
printf("Digite o valor de n para a tabela Z_n: ");
scanf("%d", &n);
// Gera e exibe a Tabela Z_n para multiplicação modular
tabela_zn_multiplicacao(n);
return 0;
}