该代码将用户提交的数字设置为数组的上限。然后,它将所有元素设置为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