OneCompiler

Lista 1 MD2

LISTA 1 - MD2

Questão 1

O cálculo de n! utilizando recursividade (exemplo teste 5!);

import javax.swing.JOptionPane;

public class FatorialRecursivo {
    
    public static int fatorial(int n) {
        if (n == 0 || n == 1) { 
            return 1;
        }
        return n * fatorial(n - 1); 
    }
    
    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite um número inteiro não negativo:");
            int var = Integer.parseInt(input);
            if (var < 0) {
                JOptionPane.showMessageDialog(null, "Fatorial não é definido para números negativos.");
            } else {
                int resultado = fatorial(var);
                JOptionPane.showMessageDialog(null, "O fatorial de " + var + " é " + resultado);
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}

Questão 2

A sequência de Fibonacci;

import javax.swing.JOptionPane;

public class FibonacciRecursivo {
    
    public static int fibonacci(int n) {
        if (n == 1 || n == 2) { 
            return 1;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite o número de termos da sequência de Fibonacci:");
            int num = Integer.parseInt(input);
            if (num <= 0) {
                JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro positivo.");
            } else {
                StringBuilder resultado = new StringBuilder("Sequência de Fibonacci até o " + num + "º termo:\n");
                for (int i = 1; i <= num; i++) {
                    resultado.append(fibonacci(i)).append(" ");
                }
                JOptionPane.showMessageDialog(null, resultado.toString());
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}


Questão 3

A impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10);

import javax.swing.JOptionPane;

public class ImprimeNumerosRecursivo {
    
    public static void rec(int n, int var) {
        if (n > var) { 
            return;
        }
        System.out.println(n); 
        rec(n + 1, var); 
    }
    
    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite um número natural:");
            int var = Integer.parseInt(input);
            if (var < 1) {
                JOptionPane.showMessageDialog(null, "Deve-se digitar um número natural (maior ou igual a 1).");
            } else {
                System.out.println("Números de 1 até " + var + ":");
                rec(1, var); 
                JOptionPane.showMessageDialog(null, "Os números foram impressos no console.");
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}


Questão 4

Um método recursivo que receba como entrada um número inteiro positivo n e retorne
1 + 2 + 3 + 4 + … + n;

import javax.swing.JOptionPane;

public class SomaRecursiva {
    public static int soma(int n) {
        if (n == 0) {
            return 0;
        }
        return n + soma(n - 1); 
    }

    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite um número inteiro positivo:");
            int var = Integer.parseInt(input);
            if (var <= 0) {
                JOptionPane.showMessageDialog(null, "Deve-se digitar um número inteiro positivo.");
            } else {
                int resultado = soma(var);
                JOptionPane.showMessageDialog(null, "A soma dos números de 1 até " + var + " é " + resultado);
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}


Questão 5

Algoritmo de Euclides para o cálculo do MDC;

import javax.swing.JOptionPane;

public class MDCAlgoritmoEuclides {
    public static int mdc(int a, int b) {
        while (b != 0) {
            int r = a % b; 
            a = b;
            b = r;
        }
        return a;
    }

    public static void main(String[] args) {
        try {
            String inputA = JOptionPane.showInputDialog("Digite o número A:");
            int a = Integer.parseInt(inputA);
            String inputB = JOptionPane.showInputDialog("Digite o número B:");
            int b = Integer.parseInt(inputB);
            int resultado = mdc(a, b);
            JOptionPane.showMessageDialog(null, "O MDC de " + a + " e " + b + " é " + resultado);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira apenas números inteiros.");
        }
    }
}


Questão 6

Calcular o MMC(a,b) a partir do MDC(a,b);

import javax.swing.JOptionPane;

public class MMCeMDC {
    public static int mdc(int a, int b) {
        while (b != 0) {
            int r = a % b; 
            a = b;
            b = r;
        }
        return a;
    }
    public static int mmc(int a, int b) {
        return (a * b) / mdc(a, b); 
    }
    public static void main(String[] args) {
        try {
            String inputA = JOptionPane.showInputDialog("Digite o número A:");
            int a = Integer.parseInt(inputA);
            String inputB = JOptionPane.showInputDialog("Digite o número B:");
            int b = Integer.parseInt(inputB);
            int resultadoMMC = mmc(a, b);
            JOptionPane.showMessageDialog(null, "O MMC de " + a + " e " + b + " é " + resultadoMMC);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira apenas números inteiros.");
        }
    }
}


Questão 7

Tabela Z_n para adição modular;

import javax.swing.JOptionPane;

public class TabelaZnAdicaoModular {
    public static int[][] criarTabelaZn(int n) {
        int[][] tabela = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                tabela[i][j] = (i + j) % n;
            }
        }
        return tabela;
    }
    public static String tabelaParaString(int[][] tabela) {
        StringBuilder builder = new StringBuilder();
        for (int[] linha : tabela) {
            for (int valor : linha) {
                builder.append(valor).append(" "); 
            }
            builder.append("\n"); 
        }
        return builder.toString();
    }
    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite o tamanho da tabela (n):");
            int n = Integer.parseInt(input);
            if (n <= 0) {
                JOptionPane.showMessageDialog(null, "Por favor, insira um valor maior que zero.");
            } else {
                int[][] tabela = criarTabelaZn(n);
                String tabelaString = tabelaParaString(tabela);
                JOptionPane.showMessageDialog(null, "Tabela Z_" + n + ":\n" + tabelaString);
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}


Questão 8

Tabela Z_n para multiplicação modular.

import javax.swing.JOptionPane;

public class TabelaZnMultiplicacaoModular {
    public static int[][] criarTabelaZn(int n) {
        int[][] tabela = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                tabela[i][j] = (i * j) % n; 
            }
        }
        return tabela;
    }
    public static String tabelaParaString(int[][] tabela) {
        StringBuilder builder = new StringBuilder();
        for (int[] linha : tabela) {
            for (int valor : linha) {
                builder.append(valor).append(" ");
            }
            builder.append("\n");
        }
        return builder.toString();
    }
    public static void main(String[] args) {
        try {
            String input = JOptionPane.showInputDialog("Digite o tamanho da tabela (n):");
            int n = Integer.parseInt(input);
            if (n <= 0) {
                JOptionPane.showMessageDialog(null, "Por favor, insira um valor maior que zero.");
            } else {
                int[][] tabela = criarTabelaZn(n);
                String tabelaString = tabelaParaString(tabela);
                JOptionPane.showMessageDialog(null, "Tabela Z_" + n + " (Multiplicação Modular):\n" + tabelaString);
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
        }
    }
}