使用java打印一系列素数的程序

时间:2015-09-19 06:16:08

标签: java primes

这段代码是为了打印一系列素数达到给定的限制,但是当我试图执行它时,它会进入无限循环。

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++;
        }
    }
}

3 个答案:

答案 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  ;
      }
    }
  }
}