我编写了一个Java代码来生成两个整数之间的素数。我在SPOJ中遇到运行时错误(NZEC)。我该如何解决这个问题?
import java.util.Scanner;
public class prime {
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
Scanner y = new Scanner(System.in);
int m = x.nextInt();
int n = y.nextInt();
if (m >= 1 && n <= 1000000000 && n - m <= 100000) {
for (int current = m; current <= n; current++) {
int sqr_root = (int) Math.sqrt(current);
boolean is_prime = true;
for (int i = 2; i <= sqr_root; i++) {
if (current % i == 0) {
is_prime = false; // Current is not prime.
}
}
if (is_prime) {
System.out.println(current);
}
}
}
return;
}
}
答案 0 :(得分:1)
突出的错误是您创建了两个Scanner
来从System.in
读取。我怀疑这会导致异常;当然这是不明智的。
更改此
Scanner x = new Scanner(System.in);
Scanner y = new Scanner(System.in);
int m = x.nextInt();
int n = y.nextInt();
到这个
Scanner x = new Scanner(System.in);
int m = x.nextInt();
int n = x.nextInt();
当然,这是假设您确实希望从标准输入而不是命令行参数中获取值。
(您可以从return
方法中删除main
。