Autor
|
Tema: Program java numeros primos (Leído 38,579 veces)
|
Hearts
Desconectado
Mensajes: 180
|
Con esto te basta: public static boolean buscaPrimo(long n){ if (n<=0) throw new IllegalArgumentException("Número no natural"); int i=2; boolean primo=true; while (i<=n/2 && primo){ if (n%i==0) primo=false; i=i+1; } return primo; }PD:perdon por no tabularlo... salu2
|
|
|
|
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 483
|
^TiFa^ si no entiendes, no entiendes no tiene caso insistir... -Ramc- Lee bien, un entero no puede ser igual a un double (con decimales), la comparación de igualdad solo te sirve cuando sacas la raiz a un numero como 25, lo mejor seria hacer una conversion o un redondeo antes de la comparación. Criticas el uso de break, pero que uso le das al return en tu bucle? Solo con for e if: for(i = 2; num % i != 0 && i < (num-1); i++){}; if(num % i != 0 || num ==2) System.out.print(num + "es primo \n");Usandolo: public static void main(String[] args) { int i; for(int num=2; num <= 1000; num++) { for(i = 2; num % i != 0 && i < (num-1); i++){}; if(num % i != 0 || num ==2) System.out.print(num + "es primo \n"); } }Haber que tal funciona.
|
|
|
|
|
En línea
|
 -R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
|
|
-Ramc-
Desconectado
Mensajes: 493
|
Lee bien, un entero no puede ser igual a un double (con decimales), la comparación de igualdad solo te sirve cuando sacas la raiz a un numero como 25, lo mejor seria hacer una conversion o un redondeo antes de la comparación.
public class comp { public static void main(String[] args) { int i = 5; double a = 5.0; boolean x = i == a; System.out.println(x); } }Eso devuelve true, porque aunque sean tipos de datos distintos, el valor es el mismo, si le pongo 5.1 devuelve false así que mi comparación <= es correcta. Criticas el uso de break, pero que uso le das al return en tu bucle?
Yo retorno un valor que mi método debe devolver sino de que otra forma, pero, tu usas break y rompes con el curso de tu bloque y hasta donde yo se, no se puede break num; por lo que uso return para devolver. -Ramc- y yo nos hemos ido de fiesta  Lo siento 43H4FH44H45H4CH49H56H45H no creo que queramos discutir... Al menos esa no es mi intencion, y tampoco se me ensena eso Lo vez ^TiFa^ solo se ha dedicado a criticar sin tan siquiera probar los códigos y comprobar que lo que el dice es cierto.  43H4FH44H45H4CH49H56H45H como dice ^TiFa^ no queremos discutir, pero, estas atacandonos sin razón alguna, desde que comenzo el topic fuiste agresivo en tus post, cuando no tenias la razón.
|
|
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
^Tifa^
Desconectado
Mensajes: 2.802
|
Un programador eficiente, siempre conoce la forma o via de obviar las sentencias debiles que producen inestabilidad al codigo tipo los break, goto, continue, etc....
Era entendible utilizar estas sentencias cuando existian ENIAC, BRLESC, Edvac y las tarjetas perforadas.. vamos, ahi era obligatorio, pero a estas alturas con estos modelos de PC y estos SO con capacidad de hacer variadas cosas a la vez, y estos lenguajes de alto nivel orientado a objetos como Java en este caso, que se supone que manejan y limpian la carga de memoria, las excepciones, y un sinumero de cosas.... creo que para un programador eficiente (Que es lo que tu quieres dejar notado aqui sobre tu persona 43H4FH44H45H4CH49H56H45H) EL uso de break es inadmisible...) No es valido para la optimizacion, ni lectura limpia del codigo fuente en si. Solo eso.
|
|
|
|
« Última modificación: 3 Diciembre 2008, 17:09 por ^TiFa^ »
|
En línea
|
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 483
|
Un programador eficiente, siempre conoce la forma o via de obviar las sentencias debiles que producen inestabilidad al codigo tipo los break, goto, continue, etc....
Era entendible utilizar estas sentencias cuando existian ENIAC, BRLESC, Edvac y las tarjetas perforadas.. vamos, ahi era obligatorio, pero a estas alturas con estos modelos de PC y estos SO con capacidad de hacer variadas cosas a la vez, y estos lenguajes de alto nivel orientado a objetos como Java en este caso, que se supone que manejan y limpian la carga de memoria, las excepciones, y un sinumero de cosas.... creo que para un programador eficiente (Que es lo que tu quieres dejar notado aqui sobre tu persona 43H4FH44H45H4CH49H56H45H) EL uso de break es inadmisible...) No es valido para la optimizacion, ni lectura limpia del codigo fuente en si. Solo eso.
Me pregunto porque no revisas las cosas que escribes antes de publicarlas, es molestoso estar corrigiendo de cada comentario tuyo por lo menos 1 error. Yo retorno un valor que mi método debe devolver sino de que otra forma
uso return para devolver.
Si le añadimos System.out.print(i + " "); a esPrimo cualquiera puede darse cuenta que ademas rompe las iteraciones del mismo modo que se haria con break o similar, por tanto no conoces el comportamiento de return, no conoces como funciona tu propio algoritmo? ya parece un copy - paste. Pero no tomemos conclusiones apresuradas, pues de seguro si es tuyo no tendrás problema en corregir semejante error que tanto criticas y si no puedes colocas al verdadero autor y asunto olvidado. Si no tienes la capacidad de entender algo tan simple investiga que tal es considerado el uso de break, continue, return y otros dentro de bucles. Y si todavia no puedes asimilar eso con gusto saco los titeres para mostrartelo. Lo vez ^TiFa^ solo se ha dedicado a criticar sin tan siquiera probar los códigos y comprobar que lo que el dice es cierto.  Claro  vamos a aclarar este punto y con gusto continuamos.
|
|
|
|
|
En línea
|
 -R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
-Ramc-
Desconectado
Mensajes: 493
|
public static boolean esPrimo(int numero) { double raiz = Math.sqrt(numero); boolean is = true; for(int i = 2; i <= raiz && is; i++) { if(numero % i == 0) is = false; } return is; }Ok te gusta mas así o ¿como lo deseas 43H4FH44H45H4CH49H56H45H? También imprime los números primos  Si no tienes mas que aportar a este hilo, dejemosla hasta aquí, no quiero discutir con vos. PD: El código claro que es mio, sino ni me hubiera molestado en contestarte.
|
|
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 483
|
public static boolean esPrimo(int numero) { double raiz = Math.sqrt(numero); boolean is = true; for(int i = 2; i <= raiz && is; i++) { if(numero % i == 0) is = false; } return is; }PD: El código claro que es mio, sino ni me hubiera molestado en contestarte. Lo justo es darle los créditos al autor del código en este caso Hearts  public static boolean buscaPrimo(long n){ if (n<=0) throw new IllegalArgumentException("Número no natural"); int i=2; boolean primo=true; while (i<=n/2 && primo){ if (n%i==0) primo=false; i=i+1; } return primo; }
|
|
|
|
|
En línea
|
 -R IP :0100 -A 100 2826:0100 MOV AH,09 2826:0102 MOV DX,109 2826:0105 INT 21 2826:0105 MOV AH,08 2826:0105 INT 21 2826:0107 INT 20 2826:0109 DB 'MI NICK ES CODELIVE.$' 2826:0127 -R BX :0000 -R CX :20 -N CODELIVE.COM -W
|
|
|
-Ramc-
Desconectado
Mensajes: 493
|
Se hace todo lo posible por no responder este tipo de mensajes, pero, al parecer tu arrogancia lo hace imposible, desde que posteaste tu super-código, no haz hecho mas que criticar el de los demas, si piensas que no hice el código, es tu problema, pero, mira bien que no son iguales; el tema ya quedo resuelto y el usuario ya tiene su código desde hace días supongo así que creo que deberian cerrar el tema.
|
|
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
juancho77
Desconectado
Mensajes: 455
rie con demencia
|
Todo para resolver una funcion que muestre numeros primos. No me quiero imaginar cuando haya que organizar una base de datos dsitribuida  PD: el break es totalmente legal. Que lo uses o no no tiene absolutamente nada que ver con la eficiencia y la naturalidad del codigo. Como harias un switch sin break? Me parece que le erraste en el concepto. Que tiene que ver que exista la POO o el SO que sea? un if es un if aca y en Cobol.
|
|
|
|
|
En línea
|
|
|
|
Night_Vision
Desconectado
Mensajes: 1
|
Buenas Primer Aporte: import javax.swing.JOptionPane; // Paquete JDK
public class Main { public static void main(String[] args) { int cont=0; String numerosPrimos="Los numeros Primos son: \n"; int rangoMenor=0; int rangoMayor=0;
rangoMenor = Integer.parseInt(JOptionPane.showInputDialog("Digite el Rango \n De: ")); rangoMayor = (Integer.parseInt(JOptionPane.showInputDialog(" Hasta: "))+1);
if (rangoMenor <= 2) { numerosPrimos += 2 +"\n"; rangoMenor = 3; }
for(int i=rangoMenor; i<rangoMayor; i++) { for(int x = 2; x < i; x++) { if(i % x == 0) { cont = 1; break; } } if(cont == 0) { numerosPrimos += i +"\n"; } cont =0; } JOptionPane.showMessageDialog(null, numerosPrimos); System.exit(0); } } Espero que funcione para alguien por ahi! 
|
|
|
|
« Última modificación: 17 Marzo 2010, 01:48 por Night_Vision »
|
En línea
|
|
|
|
Blitzkrieg'
Desconectado
Mensajes: 546
print('Hi there')
|
[broma] Tifa es la semilla de la discordia  [\broma] Menos pelea mas aporte...
|
|
|
|
|
En línea
|
|
|
|
eriex
Desconectado
Mensajes: 1
|
Dado que es un ejercicio común y parace que algunos habeis generado un codigo enorme, os envio un codigo que calcula los numeros primos de 1 a 100. Obviamente si lo que quereis es algo mas al estilo que dado un numero calcule todos los primos hasta el, basta con modificar un par de lineas.
public class SonPrimos { public static void main(String[] args){ System.out.println("1"); // El 1 es primo por lo que lo ponemos y punto for(int i = 1; i <= 100; i++){ int contador = 0; /* Inicializamos un contador a cero para cada numero que se comprueba*/ for(int j = 1; j <=i; j++){ int modulo = i % j; if(modulo == 0) contador = contador + 1; if((i == j)&&(contador == 2))/*Esto es asi porque un numero es primo si es divisible por 1 o por el mismo, es decir, si es primo el contador sera como máximo 2*/ System.out.println(i);
} } } }
|
|
|
|
|
En línea
|
|
|
|
|
Debci
|
Dado que es un ejercicio común y parace que algunos habeis generado un codigo enorme, os envio un codigo que calcula los numeros primos de 1 a 100. Obviamente si lo que quereis es algo mas al estilo que dado un numero calcule todos los primos hasta el, basta con modificar un par de lineas.
public class SonPrimos { public static void main(String[] args){ System.out.println("1"); // El 1 es primo por lo que lo ponemos y punto for(int i = 1; i <= 100; i++){ int contador = 0; /* Inicializamos un contador a cero para cada numero que se comprueba*/ for(int j = 1; j <=i; j++){ int modulo = i % j; if(modulo == 0) contador = contador + 1; if((i == j)&&(contador == 2))/*Esto es asi porque un numero es primo si es divisible por 1 o por el mismo, es decir, si es primo el contador sera como máximo 2*/ System.out.println(i);
} } } }
Se agradece pero deberias re-considerar crear un nuevo tema antes de revivir nuevos posts. Saludos
|
|
|
|
|
En línea
|
|
|
|
|
|