【发布时间】:2014-03-04 00:58:50
【问题描述】:
我正在尝试解决称为 Prime 生成器的 SPOJ 问题。虽然输出可以在我的计算机上运行,但当我尝试在 SPOJ 上运行它时它不起作用。出现以下错误消息。
错误:运行时错误 (NZEC)
你能帮我找出它是什么吗?
import java.util.BitSet;
import java.util.Scanner;
class Prime_generator {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int number_of_entries=input.nextInt();
int [] entries=new int[number_of_entries*2];
for(int i=0;i<number_of_entries*2;i++){
entries[i]=input.nextInt();
}
BitSet bits=new BitSet(1000000002);
bits.set(0, 1000000000);
bits.set(0,false);
bits.set(1,false);
for(int i=2;i<=Math.sqrt(1000000001);i++){
if(bits.get(i)){
for(int j=2;j*i<=100000000;j++){
bits.set(j*i, false);
}
}
}
int i=0;
int starting_index=0;
int ending_index=0;
int array_index=0;
while(i<number_of_entries){
starting_index=entries[array_index];
ending_index=entries[array_index+1];
array_index+=2;
for(int k=starting_index;k<=ending_index;k++){
if(bits.get(k)){
System.out.println(k);
}
}
System.out.println();
i++;
}
System.exit(0);
}
}
【问题讨论】:
-
可能运行时间过长,导致计时器到期,因此您的代码不会返回 0。
-
在规定时间内运行
-
@user35265 你不能分配像 10^9 这样的大数字 ..
-
你指的是哪一部分?
标签: java runtime-error sieve-of-eratosthenes