查找Nth prime Number,如何优化此代码

时间:2016-08-04 13:32:21

标签: java primes

这是我打印Prime no的代码。在给定范围内, 如何根据时间复杂度优化它。 以及如果用户在输入中给出一个字符,如何处理。目前,如果我在任何输入中输入一个字符,则显示此

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextLong(Scanner.java:2265)
at java.util.Scanner.nextLong(Scanner.java:2225)
at NthPrimeNo.main(NthPrimeNo.java:23)

这是代码

public class NthPrimeNo {


    public static void main(String[] args) {
        long j,k,t=0;
        int count =0;
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter the starting point of the range: ");
        long N1 = sc.nextLong();

        System.out.println("Enter the Ending point of the range: ");
        long N2 = sc.nextLong();

        System.out.print("Enter n to compute the nth prime number: "); 
        long nth = sc.nextLong();


        if((nth>0) && (N2>N1) && (N1<1500000) && (N2<1500000)) {
            for(long i=N1;i<=N2;i++) {
                for( j=1,k=0;j<=i;j++) {
                     if(i%j==0)
                         k++;
                }
                if(k==2) {
                     t++;
                     if(t==nth) {
                         System.out.println(i);
                         count=1;
                         break;
                     }

               }
         }
         if(count==0) {
             System.out.print("\n no prime number is present at this index");
         }
  } else {
      System.out.println("Invalid Input");
  }
  }

  }

1 个答案:

答案 0 :(得分:0)

你可能想要接受字符而不是长片,并验证它们是否可以制成长(Long.parseLong()或类似的东西)