Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1. package matematica;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import matematica.exceptions.FatorialInvalidoException;
  6. import matematica.exceptions.FibonacciInvalidoException;
  7. import matematica.exceptions.RaizQuadradaInvalidaException;
  8.  
  9. /**
  10.  * Classe utilizada para contas matemáticas de formas rápidas.
  11.  *
  12.  * @author Guilherme
  13.  * @version 1.0
  14.  * @since 22/03/2019
  15.  * @category Matemática
  16.  *
  17.  */
  18. public class Calculos {
  19.    
  20.     /**
  21.      * Faz a soma de vários números. Aceita números negativos para fazer uma subtração,
  22.      * para isso basta colocar um sinal de menos '-' na frente do número. Exemplo:
  23.      * somar(-1, 2, 3); A conta realizada será: -1 + 2 + 3 = 4. Outro exemplo:
  24.      * somar(2, -3, -4); A conta será: 2 + (-3) + (-4) = -5.
  25.      *
  26.      * @param numeros <p>Conjunto de números que serão somados.</p>
  27.      * @return <p>Retorna a soma dos números passados na assinatura do método.</p>
  28.      */
  29.     public static double somar(double ... numeros) {
  30.         double total = 0;
  31.        
  32.         for (double somar : numeros) {
  33.             total += somar;
  34.         }
  35.        
  36.         return total;
  37.     }
  38.    
  39.    
  40.     /**
  41.      * Faz o fatorial de um número. Exemplo: fatorial(3); 3! = 3 * 2 * 1 = 6.
  42.      *
  43.      * @param numero <p>Número que terá seu fatorial extraído.</p>
  44.      * @return <p>Retorna o fatorial do número passado na assinatura do método.</p>
  45.      * @throws FatorialInvalidoException Acontece caso o número informado seja menor que 0 (zero).
  46.      */
  47.     public static int fatorial(int numero) {
  48.         if (numero < 0) {
  49.             try {
  50.                 throw new FatorialInvalidoException();
  51.             } catch (FatorialInvalidoException e) {
  52.                 e.printStackTrace();
  53.             }
  54.         }
  55.        
  56.         if (numero == 0)
  57.             return 1;
  58.         else
  59.             return numero *= fatorial(numero - 1);
  60.     }
  61.    
  62.     /**
  63.      * Extrai a raiz quadrada de um número usando a equação de Pell.
  64.      * <br>Observação: o retorno poderá ser uma aproximação!</br>
  65.      *
  66.      * @param numero <p>Número que terá sua raiz quadrada extraída pela equação de Pell.</p>
  67.      * @return <p>Retorna a raiz quadrada de um número por meio da equação de Pell.</p>
  68.      * @throws RaizQuadradaInvalidaException Acontece quando o número passado na assinatura é negativo.
  69.      */
  70.     public static int pell(int numero) {
  71.        
  72.         if (numero < 0) {
  73.             try {
  74.                 throw new RaizQuadradaInvalidaException();
  75.             } catch (RaizQuadradaInvalidaException e) {
  76.                 e.printStackTrace();
  77.             }
  78.         }
  79.        
  80.         int impar = 1, etapas = 0;
  81.         boolean subtraivel = true;
  82.        
  83.         while (subtraivel) {
  84.             if (numero - impar < 0) {
  85.                 subtraivel = false;
  86.                 break;
  87.             }
  88.             numero -= impar;
  89.             impar += 2;
  90.             etapas++;
  91.         }
  92.        
  93.         return etapas;
  94.     }
  95.    
  96.     /**
  97.      * Informa o número na posição da sequência de Fibonnaci passado na assinatura do método.
  98.      *
  99.      * @param numero <p>Casa do número da sequência de Fibonnaci.</p>
  100.      * @return <p>Retorna o número da casa da sequência de Fibonacci passado no método.</p>
  101.      * @throws FibonacciInvalidoException Acontece quando o número passado na assinatura é negativo ou zero.
  102.      */
  103.     public static int fibonacci(int numero) {
  104.        
  105.         if (numero <= 0) {
  106.             try {
  107.                 throw new FibonacciInvalidoException();
  108.             } catch (FibonacciInvalidoException e) {
  109.                 e.printStackTrace();
  110.             }
  111.         }
  112.        
  113.         if (numero == 1)
  114.             return 0;
  115.         else if (numero == 2 || numero == 3)
  116.             return 1;
  117.         else
  118.             return fibonacci(numero - 1) + fibonacci(numero - 2);
  119.        
  120.     }
  121.    
  122.     /**
  123.      * Informa todos os números da sequência de Fibonnaci até a casa passada na assinatura do método.
  124.      *
  125.      * @param numero <p>Casa do número da sequência de Fibonnaci.</p>
  126.      * @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>
  127.      * @throws NegativeArraySizeException Acontece quando o número passado na assinatura é negativo.
  128.      * @throws ArrayIndexOutOfBoundsException Acontece quando tenta recuperar um dado de uma casa maior que as casas do array.
  129.      */
  130.     public static int[] sequenciaFibonacci(int numero) {
  131.        
  132.         int[] sequencia = new int[numero];
  133.        
  134.         for (int i = 0; i < sequencia.length; i++)
  135.             sequencia[i] = fibonacci(numero - i);
  136.        
  137.         Arrays.sort(sequencia); //organizando o Array dos números menores para os maiores
  138.        
  139.         return sequencia;
  140.     }
  141.    
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement