Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package matematica;
- import java.util.Arrays;
- import matematica.exceptions.FatorialInvalidoException;
- import matematica.exceptions.FibonacciInvalidoException;
- import matematica.exceptions.RaizQuadradaInvalidaException;
- /**
- * Classe utilizada para contas matemáticas de formas rápidas.
- *
- * @author Guilherme
- * @version 1.0
- * @since 22/03/2019
- * @category Matemática
- *
- */
- public class Calculos {
- /**
- * Faz a soma de vários números. Aceita números negativos para fazer uma subtração,
- * para isso basta colocar um sinal de menos '-' na frente do número. Exemplo:
- * somar(-1, 2, 3); A conta realizada será: -1 + 2 + 3 = 4. Outro exemplo:
- * somar(2, -3, -4); A conta será: 2 + (-3) + (-4) = -5.
- *
- * @param numeros <p>Conjunto de números que serão somados.</p>
- * @return <p>Retorna a soma dos números passados na assinatura do método.</p>
- */
- public static double somar(double ... numeros) {
- double total = 0;
- for (double somar : numeros) {
- total += somar;
- }
- return total;
- }
- /**
- * Faz o fatorial de um número. Exemplo: fatorial(3); 3! = 3 * 2 * 1 = 6.
- *
- * @param numero <p>Número que terá seu fatorial extraído.</p>
- * @return <p>Retorna o fatorial do número passado na assinatura do método.</p>
- * @throws FatorialInvalidoException Acontece caso o número informado seja menor que 0 (zero).
- */
- public static int fatorial(int numero) {
- if (numero < 0) {
- try {
- throw new FatorialInvalidoException();
- } catch (FatorialInvalidoException e) {
- e.printStackTrace();
- }
- }
- if (numero == 0)
- return 1;
- else
- return numero *= fatorial(numero - 1);
- }
- /**
- * Extrai a raiz quadrada de um número usando a equação de Pell.
- * <br>Observação: o retorno poderá ser uma aproximação!</br>
- *
- * @param numero <p>Número que terá sua raiz quadrada extraída pela equação de Pell.</p>
- * @return <p>Retorna a raiz quadrada de um número por meio da equação de Pell.</p>
- * @throws RaizQuadradaInvalidaException Acontece quando o número passado na assinatura é negativo.
- */
- public static int pell(int numero) {
- if (numero < 0) {
- try {
- throw new RaizQuadradaInvalidaException();
- } catch (RaizQuadradaInvalidaException e) {
- e.printStackTrace();
- }
- }
- int impar = 1, etapas = 0;
- boolean subtraivel = true;
- while (subtraivel) {
- if (numero - impar < 0) {
- subtraivel = false;
- break;
- }
- numero -= impar;
- impar += 2;
- etapas++;
- }
- return etapas;
- }
- /**
- * Informa o número na posição da sequência de Fibonnaci passado na assinatura do método.
- *
- * @param numero <p>Casa do número da sequência de Fibonnaci.</p>
- * @return <p>Retorna o número da casa da sequência de Fibonacci passado no método.</p>
- * @throws FibonacciInvalidoException Acontece quando o número passado na assinatura é negativo ou zero.
- */
- public static int fibonacci(int numero) {
- if (numero <= 0) {
- try {
- throw new FibonacciInvalidoException();
- } catch (FibonacciInvalidoException e) {
- e.printStackTrace();
- }
- }
- if (numero == 1)
- return 0;
- else if (numero == 2 || numero == 3)
- return 1;
- else
- return fibonacci(numero - 1) + fibonacci(numero - 2);
- }
- /**
- * Informa todos os números da sequência de Fibonnaci até a casa passada na assinatura do método.
- *
- * @param numero <p>Casa do número da sequência de Fibonnaci.</p>
- * @return <p>Retorna um array com todos os números da sequência de Fibonnaci até a casa passada na assinatura do método.</p>
- * @throws NegativeArraySizeException Acontece quando o número passado na assinatura é negativo.
- * @throws ArrayIndexOutOfBoundsException Acontece quando tenta recuperar um dado de uma casa maior que as casas do array.
- */
- public static int[] sequenciaFibonacci(int numero) {
- int[] sequencia = new int[numero];
- for (int i = 0; i < sequencia.length; i++)
- sequencia[i] = fibonacci(numero - i);
- Arrays.sort(sequencia); //organizando o Array dos números menores para os maiores
- return sequencia;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement