需要欧拉项目帮助

  • 本文关键字:项目 帮助 java
  • 更新时间 :
  • 英文 :


这段代码用来查找第1001个素数:

public class problem7 {
  public static void main(String[] args) {
    int[] myarray = new int[1001];
    int j = 0;
    boolean prime = false;
    for(int i = 2;;i++){
        for(int k = 2;k <i; k++){
            if(i== (k-1) && i % k != 0){
                prime = true;
            }
            if (i % k == 0){
                prime = false;
                prime = true;
            }
            if (prime){
                myarray[j] = i;
            }
            if(j==1000){
                System.out.println(myarray[1000]);
            }
            j++;
        }
    }
  }
}

它告诉我数组越界了。不知道为什么。如有任何帮助,不胜感激

要解决这个特殊的问题,您必须在找到所需的数字后停止代码(通过在打印找到的值后执行return):

if(j==1000){
    System.out.println(myarray[1000]);
    return;
}

这将避免下次调用j++;,以及下次调用myarray[j] = i;时的ArrayIndexOutOfBoundsException

        if(j==1000){ //if j is 1000
            System.out.println(myarray[1000]);
        }
        j++; // now j is 1001

您没有停止执行。在下一次迭代中,您将尝试执行

        if (prime){
            myarray[j] = i; // your j is 10001
        }

因此,要么从两个循环中断开,要么在打印myarray[1000]后返回。

最新更新