Depois de Várias Correções, Não Encontro Mais Erro de Lógica

Bom dia.
Depois de ter encontrado alguns erros de lógica, continuei passando e repassando, mas mesmo sem encontrar mais algum erro de lógica, continua não funcionando.

Um Exercício pede para verificar se um número é primo, até aí tudo bem, porque num dos primeiros exercícios, já tinha acertado, mas pede para mostrar todos os números primos entre 1 e o número digitado pelo usuário, considerando que este seja primo.
No if que determina se o número é primo, criei 2 laços for aninhados para poder exibir os números primos entre 1 e o número primo digitado pelo usuário.
Alguém pode me ajudar? Segue o código:

package com.leandro.aula17.labs;

import java.util.Scanner;

public class Exerc29 {

public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	System.out.println("Entre com um número inteiro.");
	int num = scan.nextInt();

	int contador = 0;

	for (int i = 1; i < num + 1; i++) {

		if (num % i == 0) {
			contador++;

		}

	}

	if (contador == 2) {
		System.out.println(num + " é primo.");

		int numEntre = 0;
		for (numEntre = 2; numEntre < num; numEntre++) {

			int cont = 0;
			int j = 0;
			for (j = 1; j == numEntre; j++) {

				if (numEntre % j == 0) {
					cont++;
				}
				if (j == numEntre & cont == 2) {
					System.out.print(numEntre + " ");
				}
			}
			

		}

	} else {
		System.out.println(num + " não é um número primo.");
	}
}

}

Segue seu codigo corrigido agora dá uma olhada o exercicio agora é vc falar o que eu alterei que corrigiu falow :wink:

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(“Entre com um número inteiro.”);
int num = scan.nextInt(); // 19

  int contador = 0;
 
  for (int i = 1; i <= num; i++) { // num=19 //

      //System.out.println(num % i);
      if (num % i == 0) {
          contador++; // =2 //
      }

  }
  /* PRIMEIRO CONTADOR JÁ PASSOU E NÃO REPETE MAIS */

  if (contador == 2) { // depois do laço de repetição, contador = 2
      System.out.println(num + " é primo."); // ATÉ AQUI, TUDO CERTO.
      
      for (int numEntre = 2; numEntre < num; numEntre++) {  // PORQUE 1 NÃO É PRIMO, ENTÃO JÁ PASSA PARA 2 // numEntre=2  // numEntre=3
      	int cont = 0;
          for (int j = 1; j <= numEntre; j++) { // de 1 a numEntre=2 // de 1 a 3
              if (numEntre % j == 0) { // 2%1==0 // 2%2=0 -- // 3%1=0 // 3%2=sobra // 3%3=0
                  cont++; // cont=1 // cont=2 -- // cont=1 // cont=1 // cont=2
              }
              if (j == numEntre & cont == 2) {
                  System.out.print(numEntre + " ");
              }
          }
      }
  } else {
      System.out.println(num + " não é um número primo.");
  }

}

Por favor, diga qual parte alterou que estou perdido.

Como seu código tá um pouco bagunçado, fiz esse ai mais limpo.
Se não entender algo, só perguntar
package com.leandro.aula17.labs;

import java.util.Scanner;

public class Exerc29 {
    
    public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	System.out.println("Entre com um número inteiro: ");
	int num = scan.nextInt();
        
        for(int i = 2; i <= num; i++) {//Número que vai ser verificado
            int contador = 0;
            for(int j = 2; j <= i; j++) {//Itera entre 2 e a variável i para verificar se é primo
                if(i % j == 0) {
                    contador++;
                }
            }
            if(contador == 1) {//Como todo número inteiro é divisivel por 1, é testado apenas se ele é divisivel por ele mesmo.
                System.out.println("O número "+ i +" é primo.");
            }
        }
    }
}
1 curtida