我不知道爲什麼我的代碼在輸入某些nthprime數字時不起作用。我試圖改變我的代碼幾次,但對於每一個nthprime我做它的工作,我讓其他人更糟。所以,如果我改變自己的代碼,使其爲nthprime = 8工作,我意識到nthprime = 7,其他人停止工作。任何人都可以指出我所做的具體缺陷,或者我應該重新思考我的代碼的大綱。謝謝。找到第n個素數
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