elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Program java numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Program java numeros primos  (Leído 66,494 veces)
painkillerpucela

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Program java numeros primos
« en: 14 Noviembre 2008, 22:44 »

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!!


En línea

WannaBeHacker

Desconectado Desconectado

Mensajes: 273



Ver Perfil
Re: Program java numeros primos
« Respuesta #1 en: 14 Noviembre 2008, 23:26 »

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.


« Última modificación: 14 Noviembre 2008, 23:30 por WannaBeHacker » En línea

Flakito81


Desconectado Desconectado

Mensajes: 518



Ver Perfil
Re: Program java numeros primos
« Respuesta #2 en: 15 Noviembre 2008, 01:20 »

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
« Última modificación: 15 Noviembre 2008, 01:22 por Flakito81 » En línea

sapito169


Desconectado Desconectado

Mensajes: 561



Ver Perfil
Re: Program java numeros primos
« Respuesta #3 en: 15 Noviembre 2008, 01:27 »

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
En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Program java numeros primos
« Respuesta #4 en: 15 Noviembre 2008, 04:36 »

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.
   
En línea

painkillerpucela

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Program java numeros primos
« Respuesta #5 en: 15 Noviembre 2008, 21:18 »

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!!!
En línea

painkillerpucela

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Program java numeros primos
« Respuesta #6 en: 16 Noviembre 2008, 21:43 »

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!!!
En línea

Sp1D3rXxX

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Program java numeros primos
« Respuesta #7 en: 20 Noviembre 2008, 23:33 »

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.  
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Program java numeros primos
« Respuesta #8 en: 26 Noviembre 2008, 20:29 »

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);
}
}
}
}

En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 497



Ver Perfil
Re: Program java numeros primos
« Respuesta #9 en: 27 Noviembre 2008, 15:05 »

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.
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
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Multiplica 2 numeros con java
Java
Tuplado 4 1,967 Último mensaje 13 Octubre 2012, 21:27
por Tuplado
Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines