- Hallamos la raíz cuadrada de n(rc).
- Obtenemos los primos menores a la raíz cuadrada de n(rc).
- Se presenta gráficamente el proceso de Erastotenes aplicado a cada uno de los primos menores a rc.Se marca todos los múltiplos mayores a cada primo menor que rc.
- Después de marcar , todos los números que quedan diferentes de 1 serán los números primos existentes entre 2 y n.
Ejemplo: Aplicar la criba de Erastotenes para los primeros 100 números naturales.
Paso 1: Raíz cuadrada de 100 = 10
Paso 2: Primos menos que 10= {2,3,5,7}
Paso 3:
Paso 4: Listar números primos de 2 a N:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
IMPLEMENTACIÓN EN JAVA:
IMPLEMENTACIÓN EN JAVA:
public ArrayList< Integer > CribaE()
{
ArrayList< Integer > aux_primos = new ArrayList<>();
ArrayList< Integer > listade2aN = new ArrayList<>();
int aux,i=3;
aux=(int) Math.sqrt(numero);//SACANDO LA RAIZ CUADRADA DE N
aux_primos.add(2);//PRIMER ELEMENTO DEL ARRAY AUXLIAR D EPRIMOS QUE SERVIRAM PARA APLICAR LA CRIBA
int contador=0;
while(i< aux)
{
if(aux_primos.size()==1)
{
aux_primos.add(i);
}
else
{
for(int k=0;k < aux_primos.size();k++)
{
if(i%aux_primos.get(k)==0)
{
contador++;
}
}
if(contador==0)
{
aux_primos.add(i);//AGREGANDO A LA LISTA AUXLIAR TODOS LOS PRMOS MENORES QUE LA RAIZ CUADRADA
}
}
i=i+2;
contador=0;
}
for(int j=0;j < (numero);j++)
{
listade2aN.add(j+1);
}
for(int m=0;m< aux_primos.size();m++)
{
for(int h=0;h< listade2aN.size();h++)
{
if(listade2aN.get(h)==1)
{
listade2aN.remove(h);//PARA ELIMINAR EL 1
}
if((listade2aN.get(h)%aux_primos.get(m)==0)&&(listade2aN.get(h)!=aux_primos.get(m)))
{
listade2aN.remove(h);//ELIMINANDO A LOS MULTIPLOS DE LOS PRIMOS MENORES A LA RAIZ DE N
}
}
}
return listade2aN;
}







0 comentarios: