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