gpt4 book ai didi

java - 计算10001素数,没有打印输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:32 24 4
gpt4 key购买 nike

public class Prime 
{
public static void main(String [] args)
{
int num = 3;
int counter = 1;
boolean flag = true;

while(counter < 10001)
{
for(int i = 2; i < num; i++)
{
if(num%i==0)
{
flag = false;
}
}
if(flag)
{
counter++;
}
num++;
}
System.out.println(num);
}
}

每当我运行这段代码时,都不会打印出任何结果。我假设它是因为代码效率低下,但我不知道这段代码有什么问题。

最佳答案

您的问题是您没有在for 循环之前将flag 重置为true;所以一旦它为 false,它就保持为 false,因此 counter 永远不会递增,这意味着 while 循环守卫永远不会变为 false

这个例子说明了为什么您应该在尽可能小的范围内(即在 while 循环内)声明变量。

while(counter < 10001)
{
int flag = true;
for (...) {...}

if (flag) { counter++; }
// ...
}

这也是为什么在考虑代码是否高效之前应确保代码正确的一个示例。如果您调试了代码(或者甚至只是添加了一些 System.out.println),您可能会发现它实际上并没有做正确的事情。

关于java - 计算10001素数,没有打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com