Java代码不工作
我正在为一个项目Q7尝试以下代码,我应该找到第10001个素数,但它不起作用。构建成功,但没有显示任何内容。请帮助。提前感谢….不清楚您到底想做什么,所以我必须根据代码进行猜测。我假设你想找到第10001个素数 首先,在循环结束时忘记将isprime设置回true。现在是这样,它在第一次迭代后将永久为false,这意味着3是唯一检测到的素数,在这之后,您将一直循环到2^63,实际上是无限的,并最终返回0 通过移动布尔值isprime=true,您可以解决问题并更好地确定变量的范围;到循环的开始。您还可以在循环中移动prime,并将if c==10001位更改为直接返回Java代码不工作,java,Java,我正在为一个项目Q7尝试以下代码,我应该找到第10001个素数,但它不起作用。构建成功,但没有显示任何内容。请帮助。提前感谢….不清楚您到底想做什么,所以我必须根据代码进行猜测。我假设你想找到第10001个素数 首先,在循环结束时忘记将isprime设置回true。现在是这样,它在第一次迭代后将永久为false,这意味着3是唯一检测到的素数,在这之后,您将一直循环到2^63,实际上是无限的,并最终返回0 通过移动布尔值isprime=true,您可以解决问题并更好地确定变量的范围;到循环的开始。
其次,C= C++;这是不对的。您正在递增变量,然后将其重置为旧值。你也应该做C++;或c=c+1 请定义不工作。我们中的大多数人在读心术方面都很糟糕,不知道代码应该做什么和不做什么,不应该做什么和正在做什么。另外,如果你说这个函数试图做什么,这会很有帮助。。。euler项目的问题对我来说毫无意义。你得到了什么错误,或者你希望你的答案是什么?伙计们,谢谢你们的反馈,很抱歉误解了……刚刚编辑了它。矛盾的答案应该可以修复你的错误。为了更有效地完成您的任务,我宁愿实现一个附带说明:-您不需要if isprime==true,只要isprime足够。是的,但它需要在循环的每个迭代中设置为true。哦,对不起。我的错。没有看到这是一个嵌套循环:\
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());
}