【发布时间】:2013-10-11 10:18:23
【问题描述】:
我在使用eratosthenes 的筛子时遇到了一些问题。 所以我从一本名为“Schaum's outlines”的书中得到了筛子的数学计算,但我认为这本书的编程编码错误...... 这是书中的代码:
public class Sieve
{
final static int P = 800;
static boolean[] isPrime = new boolean[count];
Sieve();
{
for (int i = 2; i<P; i++)
{
isPrime[i] = true;
}
for (int i = 2; i<P/2; i++)
{
if (isPrime[i])
{
for (int j = 2*i; j<P; j += i)
{
isPrime[j] = false;
}
}
}
}
public static void main(String[] args)
{
new Sieve();
print();
}
static void print() {
for (int i=0; i<count; i++)
if (isPrime[i]) System.out.println(i + " ");
else if (i%90==0) System.out.println();
System.out.println();
}}
所以是的,由于“Sieve()”无法识别,我使用了代码并做了一些细微的更改。 下面是我的代码:
public class Primenumbers
{
final static int count = 1000;
static boolean[] isPrime = new boolean[count];
public static sieve(int count, boolean isPrime);
{
for (int i = 2; i<count; i++)
{
isPrime[i] = true;
}
for (int i = 2; i<count/2; i++)
{
if (isPrime[i])
{
for (int j = 2*i; j<count; j += i)
{
isPrime[j] = false;
}
}
}
}
public static void main(String[] args)
{
for (int i=0; i<count; i++)
{
if (isPrime[i])
{
System.out.println(i + " ");
}
}
}
}
那么...我做错了什么? 感谢您的帮助!
【问题讨论】:
-
有什么问题?编译器错误?运行时异常?输出错误?还有什么?
-
关于公共静态筛子错误的编译器错误:方法声明无效;需要返回类型
-
那么编译器的信息还不够清楚吗?您需要为您的
sieve()方法提供返回类型。 -
通过删除方法并用静态替换它可以工作,但是为什么你只使用静态没有方法名称或方法类型......你能解释一下吗?
标签: java sieve-of-eratosthenes sieve