java输出5000-10000的素数,并使用筛法

求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了么,

img

总长度为 5001,这里i从5000开始也会超过数组长度

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^