Gente, sou nova aqui e faço faculdade de Engenharia de Software. Estou no segundo semestre e fazendo a matéria de Orientação a Objetos.
Tenho que entregar amanhã um algoritmo que indique todos os números primos de 0 até um número escolhido. Usei o algoritmo de Eratóstenes para fazer isso, só que tenho tido um problema com os arrays que não consigo corrigir. Podem me ajudar? Aí vai o código que eu fiz…
public class Eratóstenes {
int i,j;
float raiz;
int ReceberPrimos;
//limite até o qual serão calculados os primos
int MaxNum = 13;
void ContarPrimo(){
//vetor para armazenar os primos
int[] VetMaxNum = new int[MaxNum];
raiz = (int) (Math.sqrt(MaxNum));//calcular a raiz quadrada de MaxNum
//listando todos os números a partir
for(i=0;i<=MaxNum;i++){
VetMaxNum[i] = i;
}
//Aqui eu já risco os números 0 e 1 por não serem primos
VetMaxNum[0]=0;
VetMaxNum[1]=0;
/*Enquanto eu tiver um número menor que a raíz do MaxNum crivo os múltiplos de tal
* número, isso é possível pois o menor primo que divide um número nunca pode ser
* maior que a raíz quadrada desse número.
*/
i=2; j=2;
//riscar todos os múltiplos dos numeros primos, a começar pelos multiplos de 2
do{
if(VetMaxNum[i]!= 0){
for(i=j;i<=MaxNum;i++){
i=(j*i);
VetMaxNum[i]=0;
}
}
i=i+1;
}while(j<=raiz);
System.out.println("Os primos são: ");
for(j=0;j<=MaxNum;j++){
if(VetMaxNum[j]!=0){
ReceberPrimos = VetMaxNum[j];
}
System.out.println(ReceberPrimos);
}
}
public static void main(String[] args) {
Eratóstenes objeto = new Eratóstenes();
objeto.ContarPrimo();
}
}
E quando compilo é apresentado o seguinte erro:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
at Eratóstenes.ContarPrimo(Eratóstenes.java:21)
at Eratóstenes.main(Eratóstenes.java:63)
Quem pude ajudar, eu agradeço! =)