Número primo ajuda

3 respostas
A

Quem puder me explicar isso agradeço!!!

public class primo{
  public static void main(String [] args){
    int num=Entrada.leiaInt("Digite um número:");
    int test=(num -1);
    int cont=0;
    
    while (test > 0){ //AQUI EU NÃO ENTENDO!!!!
      if((num%test)!=0)
        cont=(cont);/AQUI
      else
        cont=(cont + 1);/AQII
      test--;
    }    
    
    if(cont == 1){
      System.out.println("É número primo");
    }
    else
    {
      System.out.println("Não é número primo");
    }
  }
}

3 Respostas

max.analista

A parte que você marcou que não entende é o seguinte.

while é um comando de repetição. Ele vai realizar todo o processo que está entre chaves { } até que a condição estabelecida no parâmetro (test>0) seja falsa.
Ou seja, enquanto o test for maior que zero, ele vai realizar as operações dentro do while.

Entedeu?

(Se sim, coloque como resolvido).

U

.acsd acho que na verdade vc deseja entender o algorítmo.

Primeiramente entendamos o conceito de números primos, que é todo número divisível somente por ele mesmo e por 1.

Para isso basta apenas calcularmos o resto da divisão(x%y) entre o número em questão(x) e outro conjunto de números(y), tal que 1<y<x.

Assim basta apenas jogarmos isso dentro de um laço, e analisarmos o resto da divisão. Se o resto for igual a 0 isto indica que o y é múltiplo de x, sendo assim x não é número primo pois é divisível por y.

No algorítmo temos a variável cont q é iniciada como 0, se o resto for igual a 0 então cont=(cont);/AQUI a variável cont permanece zerada. Caso não,
então temos que o resto da divisão é diferente de 0 e incrementamos o contcont=(cont + 1);/AQII .

Por fim analisamos a variável cont e verificamos se o seu valor é igual a 1 ou não.

max.analista

if((num%test)!=0) cont=(cont);/AQUI Quer dizer que, se o resto da divisão de dois números for diferente de zero, a variavel cont continua valendo o mesmo valor.

cont=(cont);Se o valor do resto da divisao for igual a zero, ele identifica que achou um número divisível de resto zero. Então, a variável cont é incrementada

cont=cont+1;identificando que há um divisor no momento.

Assim vai, até que saia do loop(laço while).

if(cont == 1){ System.out.println("É número primo"); } else{ System.out.println("Não é número primo"); } Essa condição verifica se a variável cont é igual a 1 pois, se ele tiver apenas um divisor - neste caso - ele é primo.
Neste caso o numero é primo se tiver apenas um divisor porque o algoritmo dispensa que o número é divisil por ele mesmo:

int num=Entrada.leiaInt("Digite um número:"); int test=(num -1);ou seja, se você vai verificar se o número 5 é primo, o algoritmo vai verificar se 5 é divisor de 4, 3, 2, 1. Ou seja, apenas o 1 é divisor.

Espero que entenda e coloque como resolvido o tópico. Caso contrário, exponha suas dúvidas.
Abraço.

Criado 22 de março de 2013
Ultima resposta 22 de mar. de 2013
Respostas 3
Participantes 3