Foro de elhacker.net

Programación => Java => Mensaje iniciado por: painkillerpucela en 14 Noviembre 2008, 22:44 pm



Título: Program java numeros primos
Publicado por: painkillerpucela en 14 Noviembre 2008, 22:44 pm
Buenas a todos, es la primera vez que me paso x aki, asi que ya os ire conociendo poco a poco.
Mi duda es sobre un programa en java que me tiene que decir si un numero es primo o no, el caso es que me funciona bien excepto con el 2 y el 3, seguro que es una chorrada pero no lo veo.
Bueno aqui os dejo el codigo:
public class Ej_5
{
   public static void main (String[]args)
   {

      if (args.length ==0)
      {      
         System.out.println("Introduzca al menos un argumento");
      }
      else
      {
         
         int numero=0; boolean es_primo; int j;
         numero=Integer.parseInt(args[0]);

         es_primo=1;
              j = 2;
              while((es_primo==1) && (j<numero) )/* Si es divisible por otro numero no es primo */
         {
                  if( numero%j==0 )
            {   
                           es_primo==false;
                        j=j+1;
                 }
                 if( es_primo=true)
            {
               System.out.println(numero+ "es primo \n");
            }
            else
            {
               System.out.println(numero+ "no es primo \n");
            }
         }
      }
   }
}         
         
Bueno espero que me podais ayudar.
Bye!!


Título: Re: Program java numeros primos
Publicado por: WannaBeHacker en 14 Noviembre 2008, 23:26 pm
Para empezar, es un caos de código, acostúmbrate a programar con un orden, sentencia por línea y esas cosas...

Código
  1. public class Primo {
  2.  
  3.    public static void main(String[] args) {
  4.  
  5.        if (args.length == 0) {
  6.            System.out.println("Introduzca al menos un argumento");
  7.        } else {
  8.  
  9.            int numero = 0;
  10.            boolean es_primo;
  11.            int j;
  12.            numero = Integer.parseInt(args[0]);
  13.  
  14.            es_primo = 1;
  15.            j = 2;
  16.            while ((es_primo == 1) && (j < numero))/* Si es divisible por otro numero no es primo */ {
  17.                if (numero % j == 0) {
  18.                    es_primo==false;
  19.  
  20.                    j = j + 1;
  21.                }
  22.                if (es_primo = true) {
  23.                    System.out.println(numero + "es primo \n");
  24.                } else {
  25.                    System.out.println(numero + "no es primo \n");
  26.                }
  27.            }
  28.        }
  29.    }
  30. }      

Y lo segundo, aquí: es_primo = 1; quieres meter un entero en una variable declarada como booleana.


Título: Re: Program java numeros primos
Publicado por: Flakito81 en 15 Noviembre 2008, 01:20 am
Yo sinceramente dudo que eso funcione, y que conste que no lo he probado. Aparte del problema con el tipo de datos con la variable es_primo que ya comentó WannaBeHacker, veo el siguiente trozo que me llama la atención:
Código
  1. if (numero % j == 0) {
  2.    es_primo==false;
  3.  
  4.     j = j + 1;
  5. }
  6.  
según eso la variable j no se incrementa al no ser que el numero sea no_primo, y para ser más concreto, j no se incrementa si el numero es diferente de multiplo de dos. Lo correcto sería tener el if sólo para cambiar el estado de la bandera (es_primo) y la j se incrementa siempre o si te gusta liar mas el codigo pones un else e incrementas la j. Sin salir de ese trozo de código recordarte algo básico casi que del prescolar de la programacion:
  = asignacion
== comparacion
asi que es_primo == false no es correcto. Al igual que if (es_primo = true) tmp lo es
.Lo dicho, corrige eso y pon más atención ;)


Saludos!

PD: mira el abre llave del while que WannaBeHacker lo elimino sin querer


Título: Re: Program java numeros primos
Publicado por: sapito169 en 15 Noviembre 2008, 01:27 am
en primer lugar tu variable es primo es boolean
esta mal que le das un valor entero

en segundo lugar primero compruebas si es primo con el while y despues muestras el mensaje

segun tu algoritmo tu muestrarias varias veces el mensaje es primo


Título: Re: Program java numeros primos
Publicado por: juancho77 en 15 Noviembre 2008, 04:36 am
ALGORITMO
Código:
si (numero mod 2 = 0) or (numero mod 3 = 0)
  entonces es_primo<-- true
sino
  para (x desde 2 hasta numero -1 mientras es_primo=true)
    si (numero mod x=0)
      es_primo=false
if (es_primo) mostrar valor.


Algo asi? Es sencillo. Solo debes considerar los casos bases 2 y 3. Obviamente, el 1 es primo y el 0 depende de la teoria donde hayas estudiado. Si son enteros negativos le aplicas math.abs y listo. Saludos.
   


Título: Re: Program java numeros primos
Publicado por: painkillerpucela en 15 Noviembre 2008, 21:18 pm
Muchas gracias a todos por vuestro interes. De todas formas os pido perdon si he metido mucho la gamba ya que estoy aprendiendo java, voy a volver a reescribir el ejercicio y a tener en cuenta las anotaciones que me habeis dicho.
Venga un saludo a todos y si me surge algo nuevo ya me paso por aqui
Bye!!!


Título: Re: Program java numeros primos
Publicado por: painkillerpucela en 16 Noviembre 2008, 21:43 pm
Bueno aqui os dejo el programa corregido otra vez, pero me sigue haciendo lo mismo, ahora me funciona con todos los numeros excepto con el 2(me dice que no es primo) y el 4 (me dice que es primo). A ver si me podeis decir que es lo que esta mal
public class prueba
{
   public static void main (String[]args)
   {

      if (args.length ==0)
      {      /*Comprueba si le pasamos al menos un argumento*/
         System.out.println("Introduzca al menos un argumento");
      }
      else
      {
         int numero=0;int j=2; int primo=1;
         numero=Integer.parseInt(args[0]);

         if(((numero%2)==1)||((numero%3)==1)))
         {
            primo=1;
            j=j+1;
         }
            
         else
         {
            primo=0;
         }
         
         if (primo==1)
         {
            System.out.println(numero+ "es primo \n");
         }
         else
         {
            System.out.println(numero+ "no es primo \n");
         }
      }
   }
}

Venga un saludo y mxas gracias!!!


Título: Re: Program java numeros primos
Publicado por: Sp1D3rXxX en 20 Noviembre 2008, 23:33 pm
a ver si te funciona a mi me va mu bien:

Código
  1. public class ClasePrimo
  2. {
  3. public static void main(String[] args)
  4.  
  5. {
  6. int n=0,d=1;
  7. int N=0;
  8. System.out.print("Introduzca el numero : ");
  9. N=ClaseLectura.leerInt();
  10. do
  11. {
  12. if(N%d==0)
  13. {      
  14. n=n+1;
  15. }
  16. d=d+1;
  17. }
  18. while(d<=N);
  19. if(n==2)
  20. {
  21. System.out.println("Es primo");
  22. }
  23. else
  24. {
  25. System.out.println("No es primo");
  26. }
  27. }
  28. }
  29.  


Título: Re: Program java numeros primos
Publicado por: ^Tifa^ en 26 Noviembre 2008, 20:29 pm
Yo no se Java (Apenas aprendiendo)

Pero creo que igual esto te serviria :

Código:
class aplicacion {

public static void main(String[] args) {

Scanner x = new Scanner(System.in);

int numero;

System.out.println("Inserte un numero!");
numero = x.nextInt();

int contador;

for ( contador = 0; contador <= numero; ++contador ) {
if ((contador%2) == 0) {
System.out.println("Es un numero primo "+contador);
} else {
System.out.println("No es un numero primo "+contador);
}
}
}
}



Título: Re: Program java numeros primos
Publicado por: 43H4FH44H45H4CH49H56H45H en 27 Noviembre 2008, 15:05 pm
Yo no se Java (Apenas aprendiendo)

Pero creo que igual esto te serviria :

Código:
class aplicacion {

public static void main(String[] args) {

Scanner x = new Scanner(System.in);

int numero;

System.out.println("Inserte un numero!");
numero = x.nextInt();

int contador;

for ( contador = 0; contador <= numero; ++contador ) {
if ((contador%2) == 0) {
System.out.println("Es un numero primo "+contador);
} else {
System.out.println("No es un numero primo "+contador);
}
}
}
}


Primero deberias tomar un curso de algoritmos, entender como se comporta una sentencia de control de flujo (en este caso el bucle con for), en este y en la mayoria de los lenguajes.
- Me quedo la duda al ver este codigo
que entiendes por numero primo?

Sp1D3rXxX
Código:
while(d<=N);
no está bien aplicado fijate en el concepto de número primo y verás que tienes cosas demás.

Y el resto de códigos  :laugh:

Código
  1. // NetBeans 5.5
  2. package primo;
  3. import java.io.*;
  4. public class Main {
  5.  
  6.    public Main() {
  7.    }
  8.  
  9.  
  10.    public static void main(String[] args) {
  11.  
  12.            BufferedReader tec;
  13.            String leer;
  14.            int num;
  15.            int cont;
  16.            tec = new BufferedReader( new InputStreamReader(System.in) );  
  17.            try
  18.            {            
  19.            System.out.print("Ingrese numero: \n");                                
  20.            leer = tec.readLine();
  21.            num = Integer.parseInt(leer);            
  22.            if(num > 1)
  23.            {
  24.            cont = 0;
  25.            for(int nu = 2; nu < num; nu++){                
  26.                if(num % nu == 0)
  27.                {
  28.                System.out.print("NO ES PRIMO\n");
  29.                cont = 1;
  30.                break;
  31.                }
  32.            }
  33.            if (cont == 0)  System.out.print("ES PRIMO\n");            
  34.            }
  35.            else if (num == 1) System.out.print("ES NUMERO UNITARIO\n");
  36.            else System.out.print("NUMERO INVALIDO\n");
  37.            }            
  38.  
  39.            catch(Exception e)
  40.            {
  41.                System.out.print("error: " + e.toString());
  42.            }
  43.  
  44.    }
  45.  
  46. }

Bueno esto lo hice de a la rapida, falta agregar varias cosas y mejorar el algoritmo, pero para darse idea de lo que menciono sirve de ejemplo.


Título: Re: Program java numeros primos
Publicado por: ^Tifa^ en 27 Noviembre 2008, 15:13 pm
43H4FH44H45H4CH49H56H45H  yo creo que deberias hablar menos y aportar mas  ;)

No creo que seas tu la persona mas adecuada para comentar aca como deberia y como no alguien programar un codigo, sobretodo porque observando tu pequeno 'ejemplo' lo mismo que criticas en mi lo estas aplicando en tu codigo.... yo esperaba al menos, ya que te tomas la molestia de criticar algo redundante que tu tambien estas aplicando, yo espera al menos ver que tu creases tu propia funcion independiente que funcionase como un bucle y una sentencia de control de flujo a la vez... al menos si criticas algo, ten con que respaldarlo, sino tienes con que respaldarlo mejor no digas nada.

Yo se perfectamente como funciona una sentencia de control de flujo y es totalmente valido usarlo dentro de un bucle for como lo idealize en mi codigo (aunque imprima numero pares/impares y no primos).

En lo unico que te doy la razon es en lo de numero primo. Pero no en el concepto de la forma como hice el codigo.

Un saludo.


Título: Re: Program java numeros primos
Publicado por: -Ramc- en 27 Noviembre 2008, 15:43 pm
43H4FH44H45H4CH49H56H45H tu algoritmo no es muy bueno, ademas de que el break en muchos casos quiere decir que la condición de parada de tu bucle no es la correcta, otra cosa, te recomiendo usar Scanner en vez del InputStreamReader, yo propongo este algoritmo para comprobar si un numero es primo:

Código
  1. public boolean esPrimo(int numero) {
  2.            double raiz = Math.sqrt(numero);
  3.            for(int i = 2; i <= raiz; i++) {
  4.                     if/numero % i == 0)
  5.                                return false;
  6.            }
  7.            return true;
  8. }
Si a alguien le sirve, simplemente lo envias en un for y listo, guardas en un arreglo los que te devuelvan true.


Título: Re: Program java numeros primos
Publicado por: 43H4FH44H45H4CH49H56H45H en 28 Noviembre 2008, 06:45 am
43H4FH44H45H4CH49H56H45H  yo creo que deberias hablar menos y aportar mas  ;)

No creo que seas tu la persona mas adecuada para comentar aca como deberia y como no alguien programar un codigo, sobretodo porque observando tu pequeno 'ejemplo' lo mismo que criticas en mi lo estas aplicando en tu codigo.... yo esperaba al menos, ya que te tomas la molestia de criticar algo redundante que tu tambien estas aplicando, yo espera al menos ver que tu creases tu propia funcion independiente que funcionase como un bucle y una sentencia de control de flujo a la vez... al menos si criticas algo, ten con que respaldarlo, sino tienes con que respaldarlo mejor no digas nada.

Yo se perfectamente como funciona una sentencia de control de flujo y es totalmente valido usarlo dentro de un bucle for como lo idealize en mi codigo (aunque imprima numero pares/impares y no primos).

En lo unico que te doy la razon es en lo de numero primo. Pero no en el concepto de la forma como hice el codigo.

Un saludo.
No esperaba que entiendas el código y menos el algoritmo, pero no creí que pudieses confundir cosas tan distintas, ni modo, intentaré con las plastilinas.
*******************************************************************
En tu código indicas que inserte un número, sea para saber si es par o primo ok?
En cada iteración imprimirá si es primo o par, o si no es alguno de ellos ok?
Si introduce 1000 cuantas líneas imprimirá en pantalla hasta llegar al número deseado.

tu propia funcion independiente que funcionase como un bucle y una sentencia de control de flujo a la vez...

Investiga que son las Sentencias de Control de Flujo en Java y te darás cuenta de la tontería que escribiste.

Yo se perfectamente como funciona una sentencia de control de flujo y es totalmente valido usarlo dentro de un bucle for como lo idealize en mi codigo (aunque imprima numero pares/impares y no primos).

Se nota perfectamente.  :rolleyes:

Acerca del código:
Citando la Frikipedia

Código:
El conjunto de los números primos es un subconjunto propio de los números naturales que engloba a 
todos los elementos de este conjunto mayores que 1 que son divisibles únicamente por sí mismos y por
la unidad.

Por ejemplo, el número 7 tiene sólo dos divisores que son el 1 y el mismo 7 por lo que 7 es número primo.

Hasta aquí ok?

Si tenemos  1, 2, 3,..., n  para mostrar el ejemplo descartamos el 1 y el mismo número que sería n para hacer la comprobación con módulo "%" puesto que si existe algún número superior a 1 e inferior a n que sea divisor de n, entonces NO SERA PRIMO, por lo tanto es inútil recorrer todos los números hasta n si encontramos algún divisor antes. Y remarcar que es una tontería comprobar con módulo "%" si n es divisible entre n eso por el "<=".
Expresado en java:
Código
  1. if(num > 1)
  2.            {
  3.            cont = 0;
  4.            for(int nu = 2; nu < num; nu++){                
  5.                if(num % nu == 0)
  6.                {
  7.                System.out.print("NO ES PRIMO\n");
  8.                cont = 1;
  9.                break;
  10.                }
  11.            }
  12.            if (cont == 0)  System.out.print("ES PRIMO\n");
  13. }

Espero que hayas captado algo de lo dicho puesto que no sabría como explicarlo de forma más sencilla.


43H4FH44H45H4CH49H56H45H tu algoritmo no es muy bueno, ademas de que el break en muchos casos quiere decir que la condición de parada de tu bucle no es la correcta, otra cosa, te recomiendo usar Scanner en vez del InputStreamReader, yo propongo este algoritmo para comprobar si un numero es primo:

Código
  1. public boolean esPrimo(int numero) {
  2.            double raiz = Math.sqrt(numero);
  3.            for(int i = 2; i <= raiz; i++) {
  4.                     if/numero % i == 0)
  5.                                return false;
  6.            }
  7.            return true;
  8. }
Si a alguien le sirve, simplemente lo envias en un for y listo, guardas en un arreglo los que te devuelvan true.


- if/numero % i == 0) en que planeta funciona semejante linea?  :-\
- i <= raiz  en que momento un entero puede ser igual a un double??? por ejemplo Math.sqrt(10);  :-X

- Así que hay que crear un arreglo para guardar los true  :o
- Prueba tu algoritmo con 900 o similares y veras que buen funcionamiento tiene  :rolleyes:

Citar
te recomiendo usar Scanner en vez del InputStreamReader
- Excelente recomendación de alguien que no sabe ni como funciona su propio algoritmo  :rolleyes:
- No voy a comentar matemáticas de primaria para hacerte ver lo ineficiente de tu algoritmo con ciertos tipos de números.


Título: Re: Program java numeros primos
Publicado por: ^Tifa^ en 28 Noviembre 2008, 17:17 pm
-Ramdc-    te doy mucha razon en el uso del break en un bucle  ;) eso es una mera violacion de un lenguaje limpio estructurado. Pero conversando con Mister Perfecto en logica y analitica no creo que llevemos mucha ventaja o si  :-*

Citar
Si introduce 1000 cuantas líneas imprimirá en pantalla hasta llegar al número deseado.

Lo mas logico al hacer un programa de uso para otra persona es hacer los tipos de inserciones dinamicas, ya sean para vectores, arreglos o variables. Si ponemos datos meramente estaticos, para que servira tu aplicacion??? imaginate una calculadora donde este solamente predestinada a sumar 2+2 de que te sirve a ti o a otro??? Sinceramente, si te basas en que un codigo esta mal, sencillamente por aplicar la tecnica de valores dinamicos, asumo que tu no programas ninguna aplicacion para uso particular de nadie, ya que el 90% de aplicaciones teoricamente aplican el uso de valores dinamicos sino son inusables.

Y si para ti es una limitante que yo no haya colocado un numero maximo de insercion, eso no es mala logica analitica porque para datos grandes por eso se desarrollo y existe el tipo de datos para guardar una cantidad de numero infinitos.. entonces si mi teoria segun tu esta erronea, los desarrolladores que crearon el tipo de datos a guardar en una variable tambien.

Esto amigo, no es un error, cualquier programador novato si considera puede hacer una variable de valor dinamico y limitar hasta que numero maximo (En el caso del programa expuesto) tiene x usuario capacidad de realizar una insercion. Por ende, vuelvo y te repito...

Habla menos y aporta mas   ;)


Título: Re: Program java numeros primos
Publicado por: -Ramc- en 28 Noviembre 2008, 20:05 pm
43H4FH44H45H4CH49H56H45H me quieres decir que solo existen raices decimales, creo que las matematicas te hacen falta a vos, claro que un entero puede ser mayor o igual a un flotante.

Código
  1. public boolean esPrimo(int numero) {
  2.            double raiz = Math.sqrt(numero);
  3.            for(int i = 2; i <= raiz; i++) {
  4.                     if(numero % i == 0)
  5.                                return false;
  6.            }
  7.            return true;
  8. }
Mi metodo funciona y es tan fácil como que si quiero los primeros 900 numeros primos, me los dara:

Código
  1. public class Primos {
  2. public static boolean esPrimo(int numero) {
  3.         double raiz = Math.sqrt(numero);
  4.         for(int i = 2; i <= raiz; i++) {
  5.             if(numero % i == 0)
  6.                         return false;
  7.             }
  8.            return true;
  9. }
  10.  
  11. public static void main(String[] args) {
  12. int i = 2;
  13. int num = 0;
  14. while(num < 900) {
  15. if(esPrimo(i)) {
  16. System.out.print(i + " ");
  17. num++;
  18. }
  19. i++;
  20. }
  21. }
  22. }

Adivina, ese code que esta arriba, lista los primeros 900 numeros primos, que tu PC no de para mas de 900 es otra cosa y si queres comprobarlos con tu calculadora de bolsillo señor matematico, por mi no hay problema.
Si piensas probarlo, por si las dudas, guardalo como Primos.java  :laugh:

Tu código hace lo mismo que el mio, el mio es mas corto, no hay problema, pero, que digas que no sirva sin haberlo probado es otra cosa, ¿eres siempre así de hostil o estas de malas?

^TiFa^  obviamente tenemos a alguien a quien no le funciono el netbeans y si el ide no lo compila estara malo?


Título: Re: Program java numeros primos
Publicado por: Hearts en 29 Noviembre 2008, 01:46 am
Con esto te basta:

Código
  1. public static boolean buscaPrimo(long n){
  2. if (n<=0)
  3. throw new IllegalArgumentException("Número no natural");
  4. int i=2;
  5. boolean primo=true;
  6. while (i<=n/2 && primo){
  7. if (n%i==0)
  8. primo=false;
  9. i=i+1;
  10. }
  11. return primo;
  12. }

PD:perdon por no tabularlo...

salu2



Título: Re: Program java numeros primos
Publicado por: 43H4FH44H45H4CH49H56H45H en 1 Diciembre 2008, 14:54 pm
^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:

Código
  1. for(i = 2; num % i != 0 && i < (num-1); i++){};              
  2. if(num % i != 0 || num ==2) System.out.print(num + "es primo \n");

Usandolo:

Código
  1. public static void main(String[] args) {
  2.  
  3.               int i;              
  4.               for(int num=2; num <= 1000; num++)
  5.               {
  6.               for(i = 2; num % i != 0 && i < (num-1); i++){};              
  7.               if(num % i != 0 || num ==2) System.out.print(num + "es primo \n");                                      
  8.               }
  9.    }

Haber que tal funciona.


Título: Re: Program java numeros primos
Publicado por: ^Tifa^ en 3 Diciembre 2008, 16:21 pm
-Ramc- y yo nos hemos ido de fiesta   ;D    ;D   ;D

Lo siento 43H4FH44H45H4CH49H56H45H  no creo que queramos discutir...

Al menos esa no es mi intencion, y tampoco se me ensena eso   :rolleyes:
 


Título: Re: Program java numeros primos
Publicado por: -Ramc- en 3 Diciembre 2008, 16:45 pm
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.

Código
  1. public class comp {
  2. public static void main(String[] args) {
  3. int i = 5;
  4. double a = 5.0;
  5. boolean x = i == a;
  6. System.out.println(x);
  7. }
  8. }

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
Código:
break num; 
por lo que uso return para devolver.

-Ramc- y yo nos hemos ido de fiesta   ;D    ;D   ;D

Lo siento 43H4FH44H45H4CH49H56H45H  no creo que queramos discutir...

Al menos esa no es mi intencion, y tampoco se me ensena eso   :rolleyes:
 
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.   :laugh:

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.


Título: Re: Program java numeros primos
Publicado por: ^Tifa^ en 3 Diciembre 2008, 17:01 pm
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.



Título: Re: Program java numeros primos
Publicado por: 43H4FH44H45H4CH49H56H45H en 4 Diciembre 2008, 14:36 pm
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.   :laugh:

Claro  :rolleyes: vamos a aclarar este punto y con gusto continuamos.


Título: Re: Program java numeros primos
Publicado por: -Ramc- en 4 Diciembre 2008, 17:37 pm
Código
  1. public static boolean esPrimo(int numero) {
  2.            double raiz = Math.sqrt(numero);
  3.            boolean is = true;
  4.            for(int i = 2; i <= raiz && is; i++) {
  5.                     if(numero % i == 0)
  6.                                is = false;
  7.            }
  8.            return is;
  9. }
Ok te gusta mas así o ¿como lo deseas 43H4FH44H45H4CH49H56H45H?
También imprime los números primos :P

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.


Título: Re: Program java numeros primos
Publicado por: 43H4FH44H45H4CH49H56H45H en 5 Diciembre 2008, 13:43 pm
Código
  1. public static boolean esPrimo(int numero) {
  2.            double raiz = Math.sqrt(numero);
  3.            boolean is = true;
  4.            for(int i = 2; i <= raiz && is; i++) {
  5.                     if(numero % i == 0)
  6.                                is = false;
  7.            }
  8.            return is;
  9. }

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   >:(

Código
  1. public static boolean buscaPrimo(long n){
  2. if (n<=0)
  3. throw new IllegalArgumentException("Número no natural");
  4. int i=2;
  5. boolean primo=true;
  6. while (i<=n/2 && primo){
  7. if (n%i==0)
  8. primo=false;
  9. i=i+1;
  10. }
  11. return primo;
  12. }


Título: Re: Program java numeros primos
Publicado por: -Ramc- en 5 Diciembre 2008, 16:46 pm
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.


Título: Re: Program java numeros primos
Publicado por: juancho77 en 5 Diciembre 2008, 20:35 pm
Todo para resolver una funcion que muestre numeros primos. No me quiero imaginar cuando haya que organizar una base de datos dsitribuida  :laugh:


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.  :rolleyes:


Título: Re: Program java numeros primos
Publicado por: Night_Vision en 17 Marzo 2010, 01:35 am
Buenas

Primer Aporte:

Código:
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!  ;D


Título: Re: Program java numeros primos
Publicado por: Blitzkrieg' en 17 Marzo 2010, 01:48 am
[broma] Tifa es la semilla de la discordia  :xD [\broma]

Menos pelea mas aporte...


Título: Re: Program java numeros primos
Publicado por: eriex en 18 Agosto 2010, 14:28 pm
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);

            }
        }
   
    }
}



Título: Re: Program java numeros primos
Publicado por: Debci en 18 Agosto 2010, 15:36 pm
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