Я не знаю, почему мой код не будет работать, когда я ввожу некоторые номера nthprime. Я пытался изменить свой код пару раз, но для каждого nthprime я заставляю его работать, я делаю это хуже для других. Поэтому, если я изменю свой код, чтобы он работал для nthprime = 8, я понимаю nthprime = 7, а некоторые другие перестают работать. Может ли кто-нибудь указать на определенный недостаток, который я сделал, или, может быть, мне следует пересмотреть схему моего кода. Спасибо.Найти nth простое число
public class NthPrime {
public static void main(String[] args) {
int nthprime;
System.out.println("Enter value for n:");
nthprime=IO.readInt();
while(nthprime <= 0){
System.out.println("Enter a positive value for n");
nthprime=IO.readInt();
}
if(nthprime == 1){
System.out.println("The nth prime number is: "+2);
}
if(nthprime == 2){
System.out.println("The nth prime number is: "+3);
}
if(nthprime > 2){
int prime=2;
int num=3;
int square;
boolean nonprime=false;
while(prime < nthprime){
prime++;
num+=2;
square = (int) Math.sqrt(num);
for (int i=3; i <= square; i++){
if (num % i == 0){
nonprime=true;
num+=2;
}
if(nonprime==false){
prime++;
num+=2;
}
}
}
System.out.println("The nth prime number is: "+num);
}
}
}
Почему вы делаете num + = 2 независимо от того, что происходит в вашем цикле for? – ergonaut
@ergonaut. Правые номера не могут быть четными, поэтому, если вы добавите 2, вы пропустите четные числа. –
@WyattLowery Я знаю, но он делает это в любой ветке. – ergonaut