1
resposta

Desafio 5

Fiz dessa maneira:

 System.out.println("\n************* IMPRESSÃO DE LISTA DE NUMEROS PRIMOS *****************");
        //lista de numeros com sublistas
        List <List<Integer>> listaNumeros = Arrays.asList(
                Arrays.asList(-1,1,2,3,4),
                Arrays.asList(5,6,7,8),
                Arrays.asList(9,10,11,12)
        );

        List <Integer> listaUnica = listaNumeros
                .stream()
                .flatMap(numero -> numero.stream())
                .collect(Collectors.toList());
        System.out.println(listaUnica);

        List<Integer> listaPrimos = listaUnica
                .stream()
                .filter(Main::isPrimo)
                .collect(Collectors.toList());

        System.out.println(listaPrimos);

método para descobrir se é primo

public static boolean isPrimo(int num){
        boolean resp = true;

        if (num< 0){
            resp = false;
        }
        else if (num > 0){
            resp = true;

            for (int i = 2; i < num; i++){
                int result = num % i;
                if ( result == 0){
                    resp = false;
                    break;
                }
                else {
                    resp = true;
                }
            }
        }
        return resp;
    };
1 resposta

Oi, Vladmir! Como vai?

Seu código está quase certo, mas há um problema no método isPrimo(). Ele retorna true para alguns números que não são primos.

O erro está dentro do for: quando encontra um número divisível, define resp = false, mas se continuar a execução, pode sobrescrever essa variável para true novamente.

Além disso, números negativos, 0 e 1 não são primos, então podemos retornar false logo no início.

Veja a versão corrigida:

public static boolean isPrimo(int num) {
    if (num < 2) return false; // Números menores que 2 não são primos
    
    for (int i = 2; i <= Math.sqrt(num); i++) { // Basta verificar até a raiz quadrada do número
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

Agora seu código vai funcionar corretamente!

Conte com o apoio do Fórum na sua jornada. Fico à disposição.