Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 埃拉托斯烯筛产量存在的问题_Java_Primes - Fatal编程技术网

Java 埃拉托斯烯筛产量存在的问题

Java 埃拉托斯烯筛产量存在的问题,java,primes,Java,Primes,此代码将用户提交的编号设置为数组的上限。然后,它将所有元素设置为true。之后,它遍历数组并将所有位于非素数位置的元素设置为false 然后,它打印出数组中所有的真(素数)元素数,而不是它们的索引。然而,我不明白为什么我的代码在这里打印出2,然后是用户输入的数字范围中的所有奇数,因为所有的真元素都应该是实际的素数 public static void main(String [] args){ Scanner s = new Scanner(System.in); System.

此代码将用户提交的编号设置为数组的上限。然后,它将所有元素设置为true。之后,它遍历数组并将所有位于非素数位置的元素设置为false

然后,它打印出数组中所有的真(素数)元素数,而不是它们的索引。然而,我不明白为什么我的代码在这里打印出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);
        }
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.print(“请输入要考虑的最大整数:”);
int bounds=s.nextInt();
布尔[]素数=新的布尔[边界];
int j=0;
for(int i=2;i
您正在使用
j
x
的倍数设置为
false
。这适用于第一个循环,当
x
2
时,但是
j
不会在下一个
x
循环中重置,并且
n
循环不会重新输入,因此可以打印所有奇数

在进入
j
循环之前,将
j
重置为
x

for(int x = 2; x < primes.length; x++){
     j = x;
     for(int n = 2; j < primes.length; n++){

启动调试器并开始工作。堆栈溢出的一个坏处是它鼓励人们不要学习使用调试器。使用调试器可能需要几秒钟才能找到答案,但堆栈溢出似乎更容易。
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97