为什么此代码仅工作小于10 ^ 4的数字?我需要找到所有小于10 ^ 8的质数,但这显示arrayindexoutofbound异常?为什么?我知道我们只能创建数组,直到size10 ^ 8(如果我错了,请纠正我),但这甚至不能用于10 ^ 5。
class Prime
{
public static void main (String[] args) throws java.lang.Exception
{
boolean[] prime = new boolean[10000];
prime[2]=true;
int i;
for(i=3; i<100000; i+=2)
prime[i]=true;
for(i=3; i<10000; i++)
{
if(prime[i]==true)
for(int j=i*i; j<10000; j=j+i)
prime[j]=false;
}
for(i=1; i<10000; i++)
{
if(prime[i]==true)
System.out.println(i);
}
}
}
for(int j=i*i; j<10000; j=j+i)
如果i为10 ^ 5,则j为10 ^ 10,这将导致int类型溢出(int类型的最大值为2 ^ 31-1 = 2147483647)