我試圖編寫BiggerThanPrime程序,它允許用戶給出一個輸入p,程序可以找到它的下一個最接近的素數(n),使得(n-p)的值最小。我的while循環進入無限循環,出了什麼問題?
這裏是我的代碼:
static boolean Prime (int n){
boolean NotPrime = true;
boolean result = true;
for (int i=2; i< n; i++){
NotPrime = (n % i != 0);
result = (result && NotPrime);
}
return result;
}
//Using Betrand's Postulate which states that there always exists at least one prime p s.t.a< p <2a
public static void main(String[] args) {
int p = Integer.parseInt(args[0]);
int k = p+1;
while(k > p && k< 2*p){
if(Prime(k) == true){
System.out.println("the next bigger prime than "+ p + " is "+ k);
} else{
k++;
}
}
}
但while循環進入無限循環。
這樣的結果是:
the next bigger prime than 20 is 23
the next bigger prime than 20 is 23
.
.
.
(infinitely goes on) :(
我在做什麼錯?
好了,它不會改變k或p ...所以'k> p && k <2 * p'保持爲真,所以循環保持循環。 (這就是循環的工作方式) – immibis
看看你的問題,當n = 2時,(n-p)是最小的。我懷疑這不是你想要回答的問題。從你的代碼看來,它似乎是「下一個大於p的素數」。你「最接近」可能低於p。最接近19的素數是17;在19之後的下一個更大的素數是23.確保你正在回答正確的問題。 – rossum