Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于Eratosthenes筛_Java_Sieve Of Eratosthenes_Sieve - Fatal编程技术网

Java 关于Eratosthenes筛

Java 关于Eratosthenes筛,java,sieve-of-eratosthenes,sieve,Java,Sieve Of Eratosthenes,Sieve,我在埃拉托斯坦的筛子上有点麻烦。 所以我从一本名为“Schaum的大纲”的书中得到了筛子的数学计算,但我认为这本书的编程是错误的。。。 这是书中的代码: public class Sieve { final static int P = 800; static boolean[] isPrime = new boolean[count]; Sieve(); { for (int i = 2; i<P; i++) { isPrime[i] =

我在埃拉托斯坦的筛子上有点麻烦。 所以我从一本名为“Schaum的大纲”的书中得到了筛子的数学计算,但我认为这本书的编程是错误的。。。 这是书中的代码:

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();
}}
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 + " ");
            }
        }
    }
}
公共类筛选
{
最终静态int P=800;
静态布尔值[]isPrime=新布尔值[计数];
筛子();
{
对于(int i=2;i
我做错了什么

您已经定义了
sieve()
,但从未调用过它。打印前需要调用它:

public static void main(String[] args)
{
    sieve(); // <<== Here
    for (int i=0; i<count; i++)
    {
        if (isPrime[i])
        {
            System.out.println(i + " ");
        }
    }
}


此更改使
sieve()
method一个静态初始值设定项,它总是在类中的任何其他内容执行之前被调用。

问题出在哪里?编译器错误?运行时异常?输出错误?其他内容?编译器错误关于公共静态筛选错误:无效的方法声明;需要返回类型编译器消息不够清楚吗?您需要为
sieve()
方法指定返回类型。通过删除该方法并将其替换为static,它起了作用,但为什么只使用static而没有方法名称或方法类型?您能解释一下吗?好的,我将其添加到主方法中,但在编译时仍会出现错误:
public static sieve(int count,boolean isPrime);
@SteelDevil顺便说一句,您需要删除方法amd构造函数声明中的分号-例如,我打赌
Sieve()后面没有分号
在书中。好吧,就是这样!但是为什么你只使用静态它做什么作为一种方法?你能解释一下吗?非常感谢你的帮助!+为你先生或女士或机器人我不知道lol:)
public static sieve() 
{
    // Code to initialize isPrime
}
static
{
    // Code to initialize isPrime
}