Java 查找第n个素数,如何优化此代码

Java 查找第n个素数,如何优化此代码,java,primes,Java,Primes,这是我在给定范围内打印素数的代码, 如何针对时间复杂性对其进行优化。 以及如何处理用户输入的字符。目前,如果我在任何输入中输入一个字符,它会显示以下内容 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

这是我在给定范围内打印素数的代码, 如何针对时间复杂性对其进行优化。 以及如何处理用户输入的字符。目前,如果我在任何输入中输入一个字符,它会显示以下内容

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");
  }
  }

  }
public class-no{
公共静态void main(字符串[]args){
长j,k,t=0;
整数计数=0;
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入范围的起点:”);
长N1=sc.nextLong();
System.out.println(“输入范围的结束点:”);
长N2=sc.nextLong();
System.out.print(“输入n以计算第n个素数:”);
长n=sc.nextLong();

如果((n>0)&&(N2>N1)&&(N1那么您可能希望接受字符而不是长字符,并验证它们是否可以被制作成长(
long.parseLong()
或类似的内容)

如果您希望人们尝试阅读您的代码,请修复缩进。分配一个长度数组
N2+1
;使用查找所有素数;然后从元素
N1
开始,一直走到找到
n
素数。@参见讨论我尝试接受长或整数呃,如果输入了其他内容,那么用户会收到一个错误,比如输入错误。我正在尝试try/catch,但它表示变量未初始化为内部try/catch变量