O que estou fazendo de errado ?

5 respostas
java
J

Quero saber o que estou fazendo de errado? O propósito do programa é mostrar todos o números primos do 1 ao 500 só que não sei oq fazer, eu sei ver se um número é primo, mas n sei fazer isso repetir quinhentas vezes. Alguém me ajuda pf !

public class ex4
{
    public static void main (String [] args)
    {
        // numero primo = ele dividido por ele mesmo e dividido por 1
        java.util.Scanner teclado = new java.util.Scanner(System.in);
        System.out.println("\f");
        int contdivi = 0;
        for (int num = 1; num <= 500; num ++){
            for (int i = 1; i <= num; i ++)
            {
                if(num % i == 0)
                {
                    contdivi = contdivi + 1;
                    if (contdivi == 2)
                    {

                    System.out.println(" number is primo: "+num);
                }
                else
                {
                }
            }
            else if (num % i == 1)
            {   
            }
        }
    }
}
}

5 Respostas

Jubinha

Boa noite, José. Veja o fonte que fiz abaixo e vê se resolve o teu problema.

public class Exercicio_04
{
 public static void main (String[] args) 
 {
  
  System.out.println("Números primos de 1 a 500 :");  
 
  for (int numero = 1; numero <= 500; numero++)
  {
    if (numero % 2 == 0)
     {
       System.out.print(numero + "\t"); 
     }  
  }
 } 
}
J

O teu script mostra só os números pares e o que eu quero é os números primos entre 2 até 500, mas obrigado por tentar me ajudar :smiley:

cviniciusm

Olá,

Você não está zerando a variável contdivi corretamente.

Você deveria colocar um break dentro do for interno quando contdivi for maior que 2.

cviniciusm

Olá,

Irei abrir uma exceção dessa vez, não costumo resolver programas básicos, mas apontar o caminho correto:

public class ex4 {
    public static void main (String [] args) {
        // numero primo = ele dividido por ele mesmo e dividido por 1
        java.util.Scanner teclado = new java.util.Scanner(System.in);
        System.out.println("\f");
        int contdivi;
        for(int num=1; num<=500; num++) {
            contdivi = 0;
            for(int i=1; i<=num; i++) {
                if(num % i == 0) {
                    contdivi++;
                    if(contdivi > 2)
                        break;
                }
            }
            if(contdivi == 2)
                System.out.println("Número é primo: " + num);
         }
     }
}

Se contdivi > 2 então não é primo assim não precisa ir até o fim do for interno, o break faz o for interno terminar.
Quando o for interno termina, por causa do break ou por ter chegado ao final, então verifica se contdivi é igual a 2, nesse caso então o número é primo.

J

Valeu vinicius !

Criado 25 de junho de 2016
Ultima resposta 27 de jun. de 2016
Respostas 5
Participantes 3