Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Número primos

Buenas tardes, estuve revisando los post que ya hablaron sobre números primos pero no se si se ajusta a lo que necesito. Además estoy en el inicio de la materia Fundamentos de programación.

Tenemos que hacer un programa en java que ingresando un número nos diga si es primo o no.

La única librería que dimos es import javax.swing.JOptionPane para capturar los datos y devolver el resultado.

No dimos mucho por lo tanto los ejemplos que hay en la web estan fuera de mis conocimientos.

Según el profesor se puede hacer con while, o con for, o con for con if y un break.

Los pasos a seguir que nos dan son:


Comienzo

- Leer un valor
- Tener un numero que usaré como divisor
- Mientras que el resto de dividir el valor leído por el número sea distinto de 0 y el número sea menor o igual que la mitad del valor leído, vamos a incrementar el número
(cuando salgo del ciclo anterior puede ser porque encuentra un resto fue 0 o porque el número superó la mitad del valor leído)
- Si el número es mayor que la mitad del valor leído, entonces el número es primo

Fin

Mi codigo escrito hasta ahora es:


package numerosprimosunidad4;

import javax.swing.JOptionPane;
/**
*
* @author guni326
*/
public class NumerosPrimosUnidad4 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int numeroIngresado;
int divisores;

numeroIngresado = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un número"));


for (divisores=2; (divisores<=numeroIngresado); divisores++)
{if(numeroIngresado%divisores==0)
JOptionPane.showMessageDialog(null,numeroIngresado+ " Es primo");
else
JOptionPane.showMessageDialog(null,numeroIngresado+ " No es primo");
}
}
}

El tema es que me devuelve varias ventanas. Algunas diciendo que es primo y otras que no lo es.

Cualquier sugerencia les agradeceré!

Saludos!

noviembre 5, 2015 | Registered Commenterguni326

Hola,

Prueba a meter la instrucción "break;" detras de cada showmessageDialog. Asi solo te saldrá una vez el mensaje

saludos

noviembre 9, 2015 | Registered Commenteroldskultxo

Muchas gracias oldskultxo, lo voy a probar.

Saludos

noviembre 9, 2015 | Registered Commenterguni326

Comenta, si te funciona o no,

En principio esa instruccion rompe el bucle, y si los calculos son correctos dirá correctamente si es un numero primo o no.
En caso de que no sea correcto el resultado habría que mirar el algoritmo. Pero vamos en principio con eso el mensaje saldrá solo una vez

Saludos

oldskultxo

noviembre 9, 2015 | Registered Commenteroldskultxo

Ahora solo sale el mensaje una vez aunque que el resultado es erróneo. Por ejemplo dice que 3 no es primo. Debe estar mal mi algoritmo. En estos casos, si o si tengo que usar una variable boolean o no es necesario?



int numeroIngresado;
int divisores;


numeroIngresado = Integer.parseInt(JOptionPane.showInputDialog("Ingrese un número"));


for (divisores=2; (divisores<=numeroIngresado); divisores++)
{if(numeroIngresado%divisores==0)
JOptionPane.showMessageDialog(null,numeroIngresado+ " Es primo");
else
JOptionPane.showMessageDialog(null,numeroIngresado+ " No es primo");
break;
}
}
}

noviembre 9, 2015 | Registered Commenterguni326

sería lo suyo usar un boolean;
esprimo =false;
for(-......)
If (//esprimo)
esprimo=true;
...

}//fin de for
//despues del for
if(esPrimo) {

//mostrar mensaje

}else{
//mostrar el otro;

Saludos

noviembre 9, 2015 | Registered Commenteroldskultxo

Muchas gracias

Saludos

noviembre 9, 2015 | Registered Commenterguni326

Pista.. puedes acotar el numero d divisores si estos son solo primos.. saludos

noviembre 11, 2015 | Unregistered CommenterChavitoDel8

Muchas gracias ChavitoDel8, ya tengo casi terminado el código. Gracias por la ayuda!!

Saludos

noviembre 11, 2015 | Registered Commenterguni326