筛选eratosthenes错误java

时间:2016-01-07 08:52:11

标签: arrays sieve-of-eratosthenes

我只是在学习java并且在编写使用Eratosthenes筛子的程序时遇到了问题。编译错误在代码下面。非常感谢任何有关此问题的帮助。非常感谢。

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

2 个答案:

答案 0 :(得分:1)

您有两个静态方法,第一个是定义数组arr,但未在第二个方法中定义。你可能想在第23和28行使用array(这是筛子的参数)。

答案 1 :(得分:0)

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