Java代码无法正常工作

时间:2012-10-23 04:58:32

标签: java

public static long sum7()
{
    int c = 1;
    boolean isprime = true;
    long prime = 0;
    for (long i = 3; i <= Long.MAX_VALUE; i++)
    {
        for (long j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                isprime = false;
                break;
            }
        }
        if (isprime == true)
        {
            c++;
        }
        if (c == 10001)
        {
            prime = i;
            break;
        }
    }
    return prime;
}
static Scanner scanner1 = new Scanner(System.in);

public static void main(String[] args)
{
    System.out.println(sum7());
}

我正在为项目的问题(Q7)尝试以下代码,我应该找到第10001个素数,但它只是不起作用。构建成功但它没有显示任何东西请帮助。提前谢谢....

1 个答案:

答案 0 :(得分:2)

目前还不清楚你正在尝试做什么,所以我必须根据代码进行猜测。我假设您希望找到第10001个素数。

首先,您忘记在循环结束时将isprime设置为true。就像现在一样,它在第一次迭代后永久是假的,这意味着3是唯一检测到的素数,并且在此之后你将一直循环到2 ^ 63(实际上是无限的)并最终返回0。 / p>

您可以通过将boolean isprime = true;移动到循环的开头来解决问题并更好地调整变量范围。您也可以将prime移动到循环中,然后将if c==10001位更改为直接返回。

其次,c = c++;并不正确。您正在递增变量,然后将其重置为旧值。您应该c++;c = c + 1