求5000-10000之间的素数,并要求使用筛法。
public class prime1shaifa {
public static void main(String[] args) {
boolean[] isPrime = new boolean[5001];
int[] Prime = new int[5001];//存放素数的数组
int t = 5000;
for (int i = 5000; i < 10000; i++) {
if (!isPrime[i])//若当前数是素数
Prime[t++] = i;//则存入素数数组
for (int j = 0; j < t && Prime[j] * i < 10000; j++) {
isPrime[i * Prime[j]] = true;
if (i % Prime[j] == 0)
break;//避免重筛,使得程序更有效率
}
}
for (int i = 0; i < 10000; i++) {
System.out.println(i + " " + isPrime[i]);
}
}
}
报错Exception in thread "main" java.lang
申明的isPrime 数组 Prime[t++] = i;,从第5000个开始赋值,前边的都没有赋值,里边默认为0,到这一步,不就除数为0了么,
总长度为 5001,这里i从5000开始也会超过数组长度