O que estou fazendo de errado ?

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)
            {   
            }
        }
    }
}
}

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"); 
     }  
  }
 } 
}

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:

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.

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.

1 curtida

Valeu vinicius !