Pesquisar este blog

terça-feira, 27 de março de 2012

Algorítimo simples em java para verificar se um numero e primo

// o exemplo abaixo usa a biblioteca Swing e faz o teste para saber se um numero e primo ou não

import javax.swing.JOptionPane;
public class primo_2 {
public static void main(String[] args) {

String entrada;
int n,cont;
entrada=JOptionPane.showInputDialog("informe um numero");
n=Integer.parseInt(entrada);
cont=0;
for (int i=1;i<=n;i++ ){
if(n%i == 0)
cont=cont+1;
}
if (cont==2){
JOptionPane.showMessageDialog(null, "o numero" +n+ " é primo");
}else{
JOptionPane.showMessageDialog(null,"o numero" +n+ " não é primo");
}

}

}

15 comentários:

  1. Olá,
    não sei java muito bem, vc pode explicar o raciocinio desse codigo por favor, (o uso da biblioteca entendi).
    Obg.

    ResponderExcluir
    Respostas
    1. Simples. O contador (variável cont) verifica por quantas vezes o número digitado sofre divisão. Para ser Primo o número deve ser divisível (com resto zero) por ele e por 1, logo contador deve ser = 2 (cont == 2). Se o contador for maior ou menor que 2, o número digitado não é primo.

      Excluir
    2. Ainda n entendi cara, como assim o contador deve ser 2?

      Excluir
    3. Este comentário foi removido pelo autor.

      Excluir
    4. Toda vez que o número é divisível pelo numero da variável i, ele soma +1 ao contador. Logo, um número primo ira entrar no contador 2 vezes (cont==2) e os números que não são primos entraram mais vezes tendo cont>2. Espero ter ajudado :)

      Excluir
  2. mas se a divisão for resto 11111 ou 11 ele ja não considera mais como primo .. sendo ele divisível por ele mesmo e por 1

    ResponderExcluir
  3. o uso dessa biblioteca é para poder usar o JOptionPane pois ele nao esta dentro do java leng é uma classe extra que precisa ser importada para seu uso assim como a classe Scanner que tambem é para entrada de valores e outros.

    ResponderExcluir
  4. esse código é preciso porem se voce digitar um número grande como 2147483647 que é o máximo de números inteiro permitido no tipo int, o computador iria demorar um pouco pra responder pois o for teria que contar todos os números...

    int cont = 0;
    for (int i = 1; i <= 9; i++) {
    if ((n % i) == 0) cont += 1;
    }
    if (cont >=1 && cont <= 2 ) {
    JOptionPane.showMessageDialog(null, "o numero é primo");
    }else{
    JOptionPane.showMessageDialog(null,"o numero não é primo");
    }

    ResponderExcluir
  5. import javax.swing.JOptionPane;
    public class primo{
    public static void main(String[] args) {
    int n,cont;
    for (;;){
    n=Integer.parseInt(JOptionPane.showInputDialog("informe um numero:"));
    cont=0;
    for (int i=1;i<=n;i++){
    if(n%i==0)
    cont++;
    }
    if (cont==2){
    JOptionPane.showMessageDialog(null, "O numero '" +n+ "' é primo");
    }else{
    JOptionPane.showMessageDialog(null,"O numero '" +n+ "' não é primo");
    }
    }
    }
    }

    ResponderExcluir
  6. package exerciciosb2;

    public class Ex6PRIMOS {

    public static void main(String[] args) {
    int cont = 0, i, n;

    n = metfunc.LeInteiro("Digite um numero natural maior que 0: ");
    // metfunc.exibeMsg("ONE TIME contador esta em: " + cont);
    for (i = 1; i <= n; i++) {
    if ((n % i) == 0 && n > 0) {
    // metfunc.exibeMsg("se " + n + " > que 0 ");

    // metfunc.exibeMsg("resto do " + n + " com o " + i + " esta dando 0 ");
    cont += 1;//cont vale 2 agora
    // metfunc.exibeMsg("contador esta em " + cont);

    } else {
    // metfunc.exibeMsg("o numero " + n + " é maior que loop" + i);
    }
    // metfunc.exibeMsg("Saindo do loop numero " + i + "!! ");
    }

    if (cont == 2) {
    metfunc.exibeMsg("o numero é primo");
    } else {
    metfunc.exibeMsg("o numero não é primo");
    }
    }
    }

    ResponderExcluir
    Respostas
    1. Faça um algoritmo em Java que verifique se o mesmo é um número primo ou não.

      Excluir
    2. Sabe como fazer??? vi os exemplos de vc nao ainda nao entendi,tem como me ajudar com essa questao?

      Excluir
  7. Só descomentar, fica bem mastigado eu aprendi assim..
    " metfunc.exibeMsg(",,,"); "

    nada mais é que uma função em outra classe:

    public class metfunc {

    public static int LeInteiro(String msg) {
    String ent;
    int i;
    ent = JOptionPane.showInputDialog(msg);
    i = Integer.parseInt(ent);
    return i;

    } //fim do metodo QUE LE INTEIRO
    }//fim da classe metfunc

    ResponderExcluir
  8. Alguem sbe como fazer?
    Faça um algoritmo em Java que leia X e Y, ambos números inteiros e positivos, e calcule xy; nesse caso, não utilizar a biblioteca Math.

    ResponderExcluir
  9. O uso dos números primos na criptografia faz deles um tópico de estudo muito ativo entre os matemáticos, pois a mesma é base da sociedade moderna.

    Bom artigo! Abraços.

    Números Primos em Java

    ResponderExcluir