Diferencia entre revisiones de «Implementación de algoritmos de teoría de números/Criba de Eratóstenes»

Contenido eliminado Contenido añadido
Raulshc (discusión | contribs.)
→‎Python: +reparar código
Raulshc (discusión | contribs.)
-codigo: Implementado incorrectamente
Línea 298:
}
}
</source>
 
=== Java (opción 2 JAOC USC) ===
<source lang="Java">
import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;
 
// Este código no está bien, considera múltiplos de 3, por ejemplo, como primos
 
public class CribaDeEratostenes_NumerosPrimos {
 
List<Integer> num = new ArrayList<Integer>();
 
public void llenarVector(int numFinal) {
if(numFinal==0)
System.out.println("\n\n********** Gracias **********");
else if (numFinal>=3)
{
int n = 3;
do {
num.add(n);
n = n + 2;
} while (n <= numFinal);
 
System.out
.println("\n****** Listado de numeros impares a partir del 3 ******\n");
for (int i = 0; i < num.size(); i++)
System.out.println(i + 1 + " : " + num.get(i));
primos();
}
else
System.out.println("\n\n********** El numero a digitar debe ser mayor que 2 **********\n\n");
}
 
public void primos() {
List<Integer> numSelect = new ArrayList<Integer>();
int aux;
int i = 0;
do {
aux = num.get(i);
if (aux != 0 && numSelect.contains(aux) == false) {
 
numSelect.add(aux);
int z = i;
for (z = i + aux; z < num.size(); z = z + aux) {
// System.out.println("Z : "+z+" num = "+num.get(z)+" N = "+aux);
num.set(z, 0);
}
 
// System.out.println("i = "+i);
}
i++;
 
} while (i < num.size());
 
System.out
.println("\n"
+ "****************** RESULTADOS ==>> NUM. PRIMOS ******************"
+ "\n");
int y = 1;
for (int t = 0; t < num.size(); t++) {
 
if (num.get(t) != 0) {
System.out.println(y + " : " + num.get(t));
y++;
}
 
}
 
}
 
public static void main(String[] Args) {
 
Scanner ingreso = new Scanner(System.in);
int numLimite;
do
{
System.out.println("Para salir escribe 0");
System.out.println("Numeros primos desde 3 hasta: ");
numLimite = Integer.parseInt(ingreso.nextLine());
CribaDeEratostenes_NumerosPrimos p = new CribaDeEratostenes_NumerosPrimos();
p.llenarVector(numLimite);
}while(numLimite!=0);
}
 
}
</source>