Ok, estas tratando de encontrar los numeros primos entre el 1 y 500. La primer vez que se ejecuta el
for de 1 a 500, se encuentran 94 numeros primos y al final de ese for,
i vale 94. Entonces, al verificar la condicion del
while, como
i es menos de 100, entonces se vuelve a ejecutar el
for de 1 a 500. pero como
i todavia vale 94, cuando se encuentran 6 nuevos numeros primos, se llega a 100. Al encontrar el septimo numero primo,
i vale 101 y es donde aparece el error.
Modifica el codigo para que veas mejor lo que te digo. Agrega un
System.out.println en la parte donde incrementas i.
...
if(c==2) {
System.
out.
println("n=" + n
+ ", i = " + i
); p[i]=n;
i++;
}
...