这段代码是为了打印一系列素数达到给定的限制,但是当我试图执行它时,它会进入无限循环。
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++;
}
}
}
答案 0 :(得分:2)
问题是num的值在循环开始时始终为2,即使你再次说num++
它需要num=2
这是start语句并且不会进入for循环,因此无限循环这将起作用
int num=2;
while(count!=n) {
for(int i=2;i<num;i++) {
if(num%i==0) {
count++;
break;
}
}
num++;
}
答案 1 :(得分:2)
USe isPrime(int num)方法在循环中生成素数的例子显示在下面的代码
public class PrimeNumbersSeries
{
public boolean isPrime(int num)
{
boolean flag=true;
for(int i=2; i<=num/2; i++)
{
if(num%i==0)
{
flag=false;
}
else
{
flag=true;
}
}
if(num<=1)
{
flag=false;
}
return flag;
}
public static void main(String []args)
{
System.out.println("how many prime no. do you want");
PrimeNumbersSeries prime=new PrimeNumbersSeries();
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int count =0;
int j=1;
while(count!=num)
{
if(prime.isPrime(j))
{
System.out.print(j+", ");
count++;
}
j++;
}
}
}
答案 2 :(得分:0)
import java.util.*;
class Prime
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("enter the no of prime nos want: ");
int n2 = sc.nextInt();
int flag = 1 ;
int count = 0 ;
for (int i =2; i<99999;i++ )
{
for (int j=2; j<i;j++ )
{
if (i%j == 0)
{
flag = 0;
break;
}
else
{
flag =1;
}
}
if (flag == 1)
{
System.out.print(i +"\t");
count++ ;
}
if (count == n2)
{
break ;
}
}
}
}