[RESOLVIDO] Problema de lógica para definir se um número é primo ou não

Já testei diversas maneiras diferentes porém ainda não consegui achar a solução. O código precisa executar uma serie de cálculos (soma, subtração, par, impar, primo, não primo), só que, não estou conseguindo entender a lógica que tenho que usar para definir se um número é primo ou não.

OBS: O erro que acontece é na hora de mostrar o resultado da quantidade de primos e não primos e a soma dos primos e não primos.

import javax.swing.JOptionPane;

public class Ex{

public static void main(String[] args){

    String qnt=" ", num=" ";
    int qntint=0, numint=0, qntpar=0, qntimpar=0, somapar=0, somaimpar=0, qntprimo=0, somaprimo=0, qntnaoprimo=0, somanaoprimo=0, aux=0;

    qnt = JOptionPane.showInputDialog("Insira quantas vezes deseja calcular: ");
    qntint = Integer.parseInt(qnt);

    for(int i=0; i<qntint; i++){
        num = JOptionPane.showInputDialog("Informe o número:");
        numint = Integer.parseInt(num);

        if(numint%2==0){
            qntpar++;
            somapar+=numint;
        }
        else{
            qntimpar++;
            somaimpar+=numint;
        }

        for(int k=1; k<=numint; k++){//Trecho de código que deveria fazer a separação e soma dos primos e não primos
            if(numint%k==0)
                aux++;
        }
        
        if(aux==2){
            qntprimo++;
            somaprimo+=numint;
        }
        else{
            qntnaoprimo++;
            somanaoprimo+=numint;
        }
}

    JOptionPane.showMessageDialog(null,"Quantidade de pares: "+qntpar+"\nQuantidade de impares: "+qntimpar);
    JOptionPane.showMessageDialog(null,"Soma dos pares: "+somapar+"\nSoma dos impares: "+somaimpar);
    JOptionPane.showMessageDialog(null,"Quantidade de primos: "+qntprimo+"\nQuantidade de não primos: "+qntnaoprimo);
    JOptionPane.showMessageDialog(null,"Soma dos primos: "+somaprimo+"\nSoma dos não primos: "+somanaoprimo);
   
}

}

O unico erro que parece ter é nao reiniciar a variavel aux.

1 curtida

como uma coisa tão “pequena” (aux) se passa imperceptível e causa um problemão, obrigado M4UR0_Dev !

Como desafio adicional, por que não tenta pesquisar sobre o Crivo de Eratóstenes? Em minha opinião, um excelente método para números primos.

1 curtida

vc não precisa verificar se um numero é divisivel por todo o intervalo de 1 até ele mesmo.

vc pode verificar até a raiz quadrada o mesmo ( arredondada pra inteiro )

inclusive se vc encontrar algo acima do 2 ja pode parar de conferir pq vc sabe q ele não é primo.

1 curtida