爲了避免任何誤解,我在這裏是新手,仍然是Java的初學者。我試圖編寫一個打印10,001st素數的代碼。代碼當前檢查數字是否可以被數字2-9(包括)整除,然後檢查數字的平方根是否是整數。查找10001素數 - 代碼沒有返回正確的數字
public static void main(String[] args){
Integer Num , Counter;
Double Sqrt; //square root
Num=8;
Counter=4 ;
while(Counter<10001){
Num++;
if ((Num%2!=0) && (Num%3!=0) && (Num%4!=0) && (Num%5!=0) && (Num%6!=0) && (Num%7!=0) && (Num%8!=0) && (Num%9!=0)){
Sqrt = Math.sqrt(Num);
if(Sqrt%1!=0){
Counter++;
}
}
}
System.out.println(Num);
}
}
編輯:
我改變它,使它不再使用假的定義,但是這個新的代碼沒有輸出,我沒有看到與循環的任何問題。我也會嘗試下面的其他建議,但想知道如何解決這個問題。
public static void main(String[] args)
{
int Num , Counter;
double Sqrt; //square root
Num=1;
Counter=0 ;
while(Counter<10001){
Num++;
Sqrt = Math.sqrt(Num);
int i = (int)Sqrt;
while(i>1){
if(Num%i==0){ //if the number is divisible then the loop is terminated and next number is tested
i=0;
}
i--;
}
if(i==1){
Counter++;
}
}
System.out.println(Num);
}
}
謝謝。
你的算法不正確。考慮數字11x13 = 143,這顯然不是素數,不是方數,也不能被2,3整除。 –
@Michael謝謝你指出。我現在正在使用不同的算法。如果你可以看看它,那會很好。 – Abdul97