該代碼將用戶提交的數字設置爲數組的上限。然後,它將所有元素設置爲true。之後,它遍歷數組並將所有處於非素數位置的元素設置爲false。Eratosthenes Sieve的輸出問題
然後,它打印出數組中所有真(主)元素的數字,而不是它們的索引。但是,我無法弄清楚爲什麼我的代碼打印出2,然後是用戶輸入的數字範圍內的所有奇數,因爲所有的真實元素只應該是實際的素數。
public static void main(String [] args){
Scanner s = new Scanner(System.in);
System.out.print("Please enter the largest integer to consider: ");
int bounds = s.nextInt();
boolean [] primes = new boolean[bounds];
int j = 0;
for(int i = 2; i < primes.length; i++) {
primes[i] = true;
}
for(int x = 2; x < primes.length; x++) {
for(int n = 2; j < primes.length; n++) {
j = n * x;
if(j < primes.length) {
primes[j] = false;
}
}
}
for(int k = 0; k < primes.length; k++) {
if(primes[k]) {
System.out.println(k);
}
}
}
啓動你的調試,並開始工作。 – 2014-09-06 00:24:12
Stack Overflow的一個壞處是它鼓勵人們不要學習使用他們的調試器。用調試器找到答案需要花費幾秒鐘,但Stack Overflow看起來似乎更容易。 – 2014-09-06 00:28:24