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.