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变量