Pular para o conteúdo

MostraSeNumPrimo.java

Script bem comentado que permite ótima compreensão do algoritmo usado para identificar se o número digitado é primo e também reduzir a quantidade de processamento. Outro ponto interessante é que o script informa o motivo pelo qual um determinado número não é primo. Por exemplo: a célebre sequência 31, 331, 3.331, 33.331, 333.331, 3.333.331 e 33.333.331 onde todos são primos e nos induzem a pensar que 333.333.331, 3.333.333.331 (...) também são. O script dirá porque as próximas sequências não são.
Edson G. de Lima xxoin
Hits: 3.799 Categoria: Java Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Script bem comentado que permite ótima compreensão do algoritmo usado para identificar se o número digitado é primo e também reduzir a quantidade de processamento. Outro ponto interessante é que o script informa o motivo pelo qual um determinado número não é primo. Por exemplo: a célebre sequência 31, 331, 3.331, 33.331, 333.331, 3.333.331 e 33.333.331 onde todos são primos e nos induzem a pensar que 333.333.331, 3.333.333.331 (...) também são. O script dirá porque as próximas sequências não são.
Download MostraSeNumPrimo.java Enviar nova versão

Esconder código-fonte

import java.util.Scanner;
public class MostraSeNumPrimo{
   public static void main (String args[]){

      long num = 0;
      long div = 3;
      int qtdiv = 0;
      Scanner leia = new Scanner (System.in);

      System.out.println ("\n------------------------------------");
      System.out.println ("Mostra se o número digitado é primo.");
      System.out.println ("------------------------------------\n");

      System.out.println ("Digite \"0\" para encerrar o programa.\n");
      do{
         System.out.println ("\nEntre com o número: ");
         num = leia.nextLong();
         if (num == 0){
            System.out.println ("Encerrando o programa.");
            System.out.println ("----------------------\n");
         }else if (num == 1){
            System.out.println ("Por definição, "+num+" NÃO É PRIMO");
         }else if (num == 2){
            System.out.println (num+" é o único número par que É PRIMO.");
         }else if (num % 2 == 0){
            System.out.println ("Exceto o 2, NENHUM número par é primo.");

         }else{
            /**
             *Com a finalidade de reduzir a quantidade de processamento...
             *
             *A partir daqui usaremos a seguinte lógica: Dividiremos o número digitado pelos números ímpares
             *a partir de 3, visto já sabermos que todo nº é divisível por 1. Pela definição de número primo,
             *entre 1 e ele mesmo não pode haver nenhum divisor.
             *O maior resultado inteiro de uma divisão é a divisão do nº por 1, cujo resultado será o
             *próprio número; enquanto que se dividirmos por ele mesmo obteremos o menor resultado, que é 1.
             *O segundo menor número inteiro é obtido se dividirmos o nº pela sua metade, visto que
             *qualquer divisor maior que sua metade resultará em um número fracionário (>1 e <2).
             *Desse modo, iremos incrementando o divisor 3, de 2 em 2 enquanto for menor ou igual à metade do nº-1,
             *visto que, a partir daí, não existe resultado inteiro, podendo então, interromper o processamento.
             *
             *Outro ponto que iremos analisar é:
             *Se encontrarmos um único divisor possível, no nosso caso: de 3 até a metade do nº,
             *indicará que o nº NÃO É PRIMO, visto que estamos descartando a divisão por 1 e pelo próprio número.
             **/

            while ((div <= (num - 1) / 2) && (qtdiv == 0)){
               if (num % div == 0){
                  System.out.println ("\nAlém de divisível por 1 e por ele mesmo, também é divisível por "+div);
                  System.out.println ("Portanto, "+num+" NÃO é primo.");
                  qtdiv++;
               }else{
                  div = div + 2;
               }
            }

            if (qtdiv == 0){
               System.out.println ("O número É PRIMO.");
            }
            div = 3;
            qtdiv = 0;
         }
      }while (num != 0);
   }
}

Diferenca entre meses - um método de busca simples

Conversor de bases

Pesquisa Binaria em um vetor ordenado

Simples applet para determinar invertido do digitado

Exemplo de sobrecarga de métodos

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.