【发布时间】:2015-12-16 08:46:37
【问题描述】:
这段代码是打印一系列素数直到给定的限制,但是当我试图执行这个时,它进入了无限循环。
import java.io.*;
class a
{
public static void main(String s[]) throws IOException
{
int count=1;
String st;
System.out.println("how many prime no. do you want");
BufferedReader obj= new BufferedReader (new InputStreamReader (System.in));
st=obj.readLine();
int n=Integer.parseInt(st);
while(count!=n)
{
int num=2;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
count++;
break;
}
}
num++;
}
}
}
【问题讨论】:
-
你没有打印任何东西?
-
您在
while循环的每次迭代开始时将 num 设置为 2,而您的for循环在 2 处开始i。这将始终使i < num条件失败,导致它从不跑。您也可以从 1 开始count,这意味着您也不能要求一个素数。 -
除了上面的 cmets:你实际上是在计算非素数......
-
您的问题标题与您的代码无关。
-
您没有在内部循环中迭代到 num。 sqrt(num) 会做。