[RESOLVIDO] Problemas com primeiros N números primos

Olá pessoal, sou novo em Java e este é meu primeiro post.
Preciso fazer um algoritmo que imprima os primeiros N números primos. O usuário deve infomar o valor de N.

Olha como ele está

[code]package num_primos;

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Num_Primos {

public static void main(String[] args) {
    int N, i=1;
    double x=2,  Divisor=2, Quociente;
    String Impressao="";
    
    DecimalFormat df = new DecimalFormat("#,##0");
    
    N = Integer.parseInt(JOptionPane.showInputDialog("Digite o número de primos que serão imprimidos:"));

    if (N <= 0){
        JOptionPane.showMessageDialog (null,"Valor inválido. Imprima pelo menos um número primo.");  
    } else {
    
    while (i <= N){
        for (;Divisor < x;) {
            Quociente = x % Divisor;
            if (Quociente == 0) {
                x++;
            } else { Divisor++;}}
            
         for (;Divisor==x;) {
            Quociente = x % Math.sqrt(x);
            if (Quociente != 0) {
                Impressao += "\n" + i + "º - " + df.format(x);
                i++;
                Divisor++;}}
                x++; 
                Divisor=2;
    }
    JOptionPane.showMessageDialog (null,"Os " + N + " primeiros números primos são:" + Impressao);
    }
}

}
[/code]

Ao pedir que sejam imprimidos os primeiros 30 primos, ele está imprimindo valores que não são primos, vejam:

Os 30 primeiros números primos são:
1º - 2
2º - 3
3º - 5
4º - 7
5º - 11
6º - 13
7º - 17
8º - 19
9º - 23
10º - 27
11º - 29
12º - 31
13º - 35
14º - 37
15º - 41
16º - 43
17º - 47
18º - 53
19º - 59
20º - 61
21º - 67
22º - 71
23º - 73
24º - 79
25º - 83
26º - 87
27º - 89
28º - 95
29º - 97
30º - 101

Como posso solucionar este problema? :?: Acho que há algum erro nas condições. Por favor, me ajudem.

amigo é simples!

int primos=0;
int x=0;

while(primos<31){
x++;
int y=x-1;
while(y>0){
int resto= x%y;
if(resto==0){
primos++;
System.out.println(x);
break;
}else{
y–;
}
}
}

fica mais ou menos assim corrigir os erros de sintaxe, mas isso deve resolver oque voce precisa, desculpa o portugues estou com teclado americano e desacostumei kkkk
t+

Conversei com um colega da faculdade, e ele me explicou como o código dele calculava para saber se um determinado número é primo ou não. Ele utilizou o método static public boolean . Como ainda não sei como utilizar esses métodos, fiz de um modo que não precisase dele, mas utilizando algumas das idéias dele e fazendo modificações, e consegui resolver o problema. :smiley:
Ficou assim:

[code]public static void main(String[] args) {
int N, i=1;
double x=2, Divisor;
String Impressao="";
boolean Primo = true;

    DecimalFormat df = new DecimalFormat("#,##0");
    
    N = Integer.parseInt(JOptionPane.showInputDialog("Digite o número de primos que serão imprimidos:"));

    if (N <= 0){
        JOptionPane.showMessageDialog (null,"Valor inválido. Imprima pelo menos um número primo.");  
    } else {
    
    while (i <= N){
        for (Divisor = 2;Divisor <= (x/2); Divisor++) { //o Divisor só precisa ir até a metade do valor de x.
            if (x % Divisor == 0) {
                Primo  = false;
                break;}}
        
        if (Primo == true) {
           Impressao += "\n" + i + "º - " + df.format(x);
                i++;   
                x++;}
        else {
            x++;
            Primo = true;}
        }
         
      
    JOptionPane.showMessageDialog (null,"Os " + N + " primeiros números primos são:" + Impressao);
    
    }
    
}

} [/code]

Agora só falta fazer o teste de mesa para o calculo dos 20 primeiros primos. :?