埃拉托色尼筛法错误 java

sieve of eratosthenes error java

我刚刚学习 java,在编写使用埃拉托色尼筛法的程序时遇到问题。编译错误在代码下方。非常感谢对这个问题的任何帮助。非常感谢。

public class Main {

    public static void main(String[] args) {

        int[] arr = new int[1000000];
        for (int i = 0; i < 1000000; ++i) 
        {
                arr[i] = i;
        }

        sieve(arr);
        for (int elem :arr)
        {
            System.out.println(elem);
        }
    }

    public static void sieve(int[] array) 
    {

        int n = 0;

        for (int i = 2; i < 1000; ++i) 
        {
            if (arr[i] != 0) 
            {
                for (int  j = (int)Math.pow(i, 2) + n * i; j < 1000000; ++j)
                {
                    do 
                    {
                        arr[j] = 0;
                        n++;
                    }while ( n < 1000000);
                }
            }
        }
    }
}

这里是编译错误 javac project3.java

project3.java:23: error: cannot find symbol
    if (arr[i] != 0) {
        ^
  symbol:   variable arr
  location: class project3

project3.java:28: error: cannot find symbol
            arr[j] = 0;
            ^
  symbol:   variable arr
  location: class project3

2 errors

** 我将其编译为 class project3

你有两个静态方法,第一个你定义了数组 arr 但它没有在第二个方法中定义。您可能打算在第 23 行和第 28 行使用 array(这是 sieve 的参数)。

arr[i] 替换为 sieve() 中的 array[i]