埃拉托色尼筛法错误 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]
。
我刚刚学习 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]
。