Pues bien, necesito que me ponga en un ListBox los numeros primos que se
encuentren entre 1 y un numero a elección del usuario.
Lo intente pero cada vez que lo intento o me saca los numeros pares, o me
saca los impares o solo me muestra el 0.
Espero que me podais ayudar.
Gracias.
Salu2.
es más o menos así, en pseudocodigo
i=nro elegido por el usuario
A={2,3,...,i}
indice=0
n=A[indice]
mientras indice<A .Largo() (*)
borrar todos los multiplos de n del Vector A;
indice++;
Mostrar todos los elementos de A
(*) se puede optimizar esta condicion, si queres lo discutimos
"Álvaro José" <atei...@gmail.com> escribió en el mensaje
news:#zcpyv1J...@TK2MSFTNGP15.phx.gbl...
En un formulario he colocado un listbox (lstNros), una caja de texto
(txtNro) y un boton de comando y el codigo es el siguiente:
private void button1_Click(object sender, EventArgs e)
{
int i = 1;
for (i = 1; i<= Convert.ToInt32 (txtNro.Text) ;i++)
{
if ( i == 1 || i== 2 || EsPrimo(i) == true )
{
lstNros.Items.Add (i) ;
}
}
}
public bool EsPrimo(int nro)
{
int i = 1;
int var = 0;
for (i = 1; i< nro - 1; i++)
{
if (nro % i == 0)
{
var ++;
}
}
if (var == 1)
return true;
else
return false;
}
Saludos
Guillermo
"Álvaro José" <atei...@gmail.com> escribió en el mensaje
news:%23zcpyv1...@TK2MSFTNGP15.phx.gbl...
NOTA..
presta epecial atencion al metodo llamado "esPrimo" ahi es donde
se encuentra el algoritmo que te retorna un balor True o False, para saber
si un numero de los evaluados es primo o no.
Salu2
()()()()o: Nuevito
// Fuente: Metodos2.java
// Por ()()()()o: Nuevito 09/09/2005
// Victor Manuel Montoya Guardado
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
public class Metodos2
{
public static void main(String args[])
{
int numero;
String sNumero;
String primo;
String out = "Numero\tEsPrimo";
JTextArea areaOut = new JTextArea(10,10);
JScrollPane scrollOut = new JScrollPane(areaOut);
do
{
sNumero = JOptionPane.showInputDialog("Ingresar Numero, " +
"Cero para Fin: ");
numero = Integer.parseInt(sNumero);
if(numero > 0)
{
if(Metodos2.esPrimo(numero) == true)
primo = "Si";
else
primo = "No";
out += "\n" + numero + "\t" + primo;
} //Fin if(numero > 0)
else
out += "\n--- Fin ---";
} while(numero >0);
areaOut.setText(out);
areaOut.setEditable(false);
JOptionPane.showMessageDialog(null,scrollOut,"Resultado",
JOptionPane.PLAIN_MESSAGE);
System.exit(0);
} //Fin metodo main
public static boolean esPrimo(int n)
{
boolean p = false;
if(n < 4)
p = true;
else
{
if(n%2 == 0)
p = false;
else
{
int divOk = 0;
int a = 1;
int lim = (n-1) / 2;
if(lim%2 == 0)
lim--;
while(a <= lim)
{
if(n%a == 0)
divOk++;
a += 2;
if(divOk == 2)
a = lim + 1;
} //Fin while(a <= lim)
if (divOk == 1)
p = true;
} //Fin else
} //Fin else
return (boolean) p;
} //Fin metodo esPrimo
} //Fin class Metodos2
Llevo muy poco en C# y por ahora estoy aprendiendo y me costaba
desarrollarlo.
Salu2
"Guillermo Peralta" <guillermo...@SPAMonenet.com.ar> escribió en el
mensaje news:eTljWF2J...@TK2MSFTNGP09.phx.gbl...
L
a parte del LISTBOX es la mas chorra y te la dejo para que te entretengas
con listbox.add o algo así era (no quiero mirar el manual)
Este método es para que subas nota y el más rápido que conozco para calcular
si un número es primo o no.
Todo número no primo es divisible por él y también por su raíz cuadrada.
Ejs:
sqrt(1.000.000= 1.000
entre los 1.000 primeros números de N esta su divisor.
sqrt(4) = 2
entre los 2 primeros números de N esta su divisor.
sqrt(12) = 3.464101615137754587 entre los 3 primeros números de N esta su
divisor
etc......
public bool primo (int num) {
bool ret_primo = true;
int limit = 0, i = 1; // i = 1 porque i € N
limit = (int) Math.sqrt(num); // Aquí lee el manual de conversión de tipos
de double a int. CUIDADO CON LOS NÚMEROS NEGATIVOS. También paso de mirar
el manual para conversión de tipos.
while ( (num % i != 0) && (i <= limit) { i++; }
if (i != limit && i > 3) primo = false;
return ret_primo;
}