Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Norlak en 24 Noviembre 2011, 19:16 pm



Título: Numeros primos Otro enfoque (solucionado Pag:2)
Publicado por: Norlak en 24 Noviembre 2011, 19:16 pm
Perdonadme por hacer otro post pero en el otro si lo publico ahora no vereis lo que quiero añadir ahora por eso hago otro post de nuevo ruego disculpas.


he visto el problema con otro enfoque, alguien me puede decir porque falla gracias.

Citar
public class Primos {
   void primo(){
      
   
   int maxi=97;
    int x=1;
    int resul;
    int y;
    for (x=2;x<maxi;x++){
         //   System.out.println(x);
System.out.println("divido "+maxi+" entre "+x);
   resul=maxi%x;
       if (resul==1.0){
          System.out.println("esto vale X cuando entra en el if "+x);
          System.out.println(maxi);
       
       }
    }
}
}

Hace practicamente todo lo que quiero, pero a la hora de mostrar "maxi" me lo muestra varias veces y yo quiero que solo me lo muestre una vez para que no se repitan tanto y tanto los mismo numeros. gracias nuevamente


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 20:35 pm
Hacer que salga del bucle queres? si se cumple lo q queres q haga eso q pones y luego un break; no se si es break; en java pero es para salir del bucle for


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 20:55 pm
Hacer que salga del bucle queres? si se cumple lo q queres q haga eso q pones y luego un break; no se si es break; en java pero es para salir del bucle for

Gracias amigo por contestar aunque sea, si se que es un break, hay esque no e puesto lo que realmente necesito es que cuando comprueba si el 97 es primo  pues lo muestre pero solo una vez no todas las veces que lo necesite.


gracias


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 21:06 pm
Pero no entiendo tu logica, porque haces esto:   if (resul==1.0) ?

Un numero es primo si lo divides entr 2, entre 3, 4, 5 ... hasta la raiz cuadrada de ese numero y la division no es exacta nunca.
Entonces decirlo de otra forma seria que si a 97 lo dividis entre 2 hasta su raiz y no hay un resto == 0 nunca entonces es primo.

Y lo que quieres es que si el numero se divide entre uno, q lo muestre a ese divisor que seria el valor de x.

Eso quieres hacer? tienes q usar el break para salir despues de eso


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:10 pm
Pero no entiendo tu logica, porque haces esto:   if (resul==1.0) ?

Un numero es primo si lo divides entr 2, entre 3, 4, 5 ... hasta la raiz cuadrada de ese numero y la division no es exacta nunca.
Entonces decirlo de otra forma seria que si a 97 lo dividis entre 2 hasta su raiz y no hay un resto == 0 nunca entonces es primo.

Y lo que quieres es que si el numero se divide entre uno, q lo muestre a ese divisor que seria el valor de x.

Eso quieres hacer? tienes q usar el break para salir despues de eso


nose solo son desbarios de 6 horas que llevo ya con esto y eso son intentos de algo que no a dado fruto XD de todas formas muchas gracias ya mañana posteare el resultado puesto me lo dara el profesor gracias de todas maneras


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 21:12 pm
Pero explica como es la tarea desde un principio con la letra y vemos si te podemos dar una mano para q lo entiendas


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:13 pm
Pero no entiendo tu logica, porque haces esto:   if (resul==1.0) ?

Un numero es primo si lo divides entr 2, entre 3, 4, 5 ... hasta la raiz cuadrada de ese numero y la division no es exacta nunca.
Entonces decirlo de otra forma seria que si a 97 lo dividis entre 2 hasta su raiz y no hay un resto == 0 nunca entonces es primo.

Y lo que quieres es que si el numero se divide entre uno, q lo muestre a ese divisor que seria el valor de x.

Eso quieres hacer? tienes q usar el break para salir despues de eso

el if (resul==1)  es porque si el numero tiene de resto 0 en alguno de las divisiones hasta ese numero seria primo por ejemplo

7/2= el resto seria 3.5
7/7= el resto seria 1 ( ese uno es al que me refiero)


Título: Re: Numeros primos Otro enfoque
Publicado por: RyogiShiki en 24 Noviembre 2011, 21:16 pm
Yo se que estás empezando, pero si analisas con mucho detenimientos los codes de [SRC]isPrime (http://foro.elhacker.net/java/src_isprime-t345554.0.html) al menos el de madpitbull_99 o el de BlackZeroX te darás cuenta que de complejos no tienen ni pisca, y que hacen exactamente lo que $Edu$ dice.

Saludos


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 21:17 pm
Estas pensando todo mal, una cosa es el cociente y otra cosa el resto en una division entera. Y si no dejas la letra de la tarea no podremos ayudarte.. lo siento


Título: Re: Numeros primos Otro enfoque
Publicado por: RyogiShiki en 24 Noviembre 2011, 21:20 pm
el if (resul==1)  es porque si el numero tiene de resto 0 en alguno de las divisiones hasta ese numero seria primo por ejemplo

7/2= el resto seria 3.5
7/7= el resto seria 1 ( ese uno es al que me refiero)

Creo que tienes algunos conceptos mal. eso que dices no es el resto, es el resultado de la división en la primera el resto es uno, y e la segunda es 0.

Lee esto: http://es.wikipedia.org/wiki/Resto

Saludos


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:23 pm
Yo se que estás empezando, pero si analisas con mucho detenimientos los codes de [SRC]isPrime (http://foro.elhacker.net/java/src_isprime-t345554.0.html) al menos el de madpitbull_99 o el de BlackZeroX te darás cuenta que de complejos no tienen ni pisca, y que hacen exactamente lo que $Edu$ dice.

Saludos


Gracias por la colaboracion, yo necesito que me diga los numeros primos comprendidos en el maximo de numeros decimal que puede almacenar para eso utilizo el "Integer.Maxime.Value"

entonces todos teneis un codigo dode pones un numero, y yo no quiero un numero necesito que compruebe todos los numeros, que con cada numero haga la division de todos sus anteriores y me de si es primo o no y me lo muestre en pantalla... por eso no me valen esos codigos porque por mas que intento modificarlos para qu me funcione no puedo


Gracias por todo!


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 21:29 pm
Dices que por ejemplo si maxime.value es 32767 por ahi (ni idea cuanto es ahora) que te muestre en pantalla todos los numeros primos hasta ahi?  O no sera una funcion lo que tenes que hacer que si le pasas como valor el numero 20, mostrara hasta el 20 los numeros primos, que serian 2 , 3, 5, 7, 11, 13, 17, 19 no? eso quieres?


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:33 pm
Dices que por ejemplo si maxime.value es 32767 por ahi (ni idea cuanto es ahora) que te muestre en pantalla todos los numeros primos hasta ahi?  O no sera una funcion lo que tenes que hacer que si le pasas como valor el numero 20, mostrara hasta el 20 los numeros primos, que serian 2 , 3, 5, 7, 11, 13, 17, 19 no? eso quieres?

yo lo que quiero es una funcion que me muestre todos los primos del maximo (180.000.000) mas o menos pues que me de todos los primos desde el 1 hasta ese valor eso es lo que quiero conseguir, gracias por lo del resto estaba super desorientado!


Título: Re: Numeros primos Otro enfoque
Publicado por: RyogiShiki en 24 Noviembre 2011, 21:35 pm
Bueno entonces, viste el video que te pase? Este: http://minidosis.org/C++/Tablas/Criba%20de%20Erat%C3%B3stenes/ Lo más complejo que tiene es un Array. Investigaste sobre la Criba de Eratóstenes?

Saludos


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:43 pm
Bueno entonces, viste el video que te pase? Este: http://minidosis.org/C++/Tablas/Criba%20de%20Erat%C3%B3stenes/ Lo más complejo que tiene es un Array. Investigaste sobre la Criba de Eratóstenes?

Saludos


la criba de eratostenes si la mire compañero pero aun me queda algo grande, el array seria una solucion perfecta si ya me lo hubieran explicado amigo... aun no llemamos a eso asique no puedo realizar el ejercicio con algo que no nos ha explicado aun asi le hechare un super vistazo gracias a todos de verdad, me alegra saber que esta comunidad de verda la gente ayuda


Título: Re: Numeros primos Otro enfoque
Publicado por: $Edu$ en 24 Noviembre 2011, 21:46 pm
Si te supieras explicar, no tendrias ni q crear 2 temas para esto..

Hace un bucle dentro de otro, el de afuera q sera un bucle desde 1 hasta ese numero "maximo" q tanto dices y el bucle de adentro se encargara de verificar si es primo o no.


procedimiento primo( maximo) {

for (i = 2; i <= maximo; i++)
{

       for (k = 2; k < i; k++)
       {
             if (i%k == 0) {primo = false; break;} // salimos porque no es primo
       }

  if (primo) Mostrar Primo;
}


}

Lo hice asi nomas, para q entiendas la idea de algo facil q puedes hacer, algunas cosas tendras q cambiarla pero la idea la tendras

pd: Fijate q hago q siga hasta el numero y no hasta la raiz como habia dicho antes, pero eso si quieres lo optimizas vs


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 21:49 pm
Si te supieras explicar, no tendrias ni q crear 2 temas para esto..

Hace un bucle dentro de otro, el de afuera q sera un bucle desde 1 hasta ese numero "maximo" q tanto dices y el bucle de adentro se encargara de verificar si es primo o no.


procedimiento primo( maximo) {

for (i = 2; i <= maximo; i++)
{

       for (k = 2; k < i; k++)
       {
             if (i%k == 0) {primo = false; break;} // salimos porque no es primo
       }

  if (primo) Mostrar Primo;
}


}

Lo hice asi nomas, para q entiendas la idea de algo facil q puedes hacer, algunas cosas tendras q cambiarla pero la idea la tendras

pd: Fijate q hago q siga hasta el numero y no hasta la raiz como habia dicho antes, pero eso si quieres lo optimizas vs

voy a intentar pulirlo ahora te cuento gracias amigo, y perdona por no saber explimarme intente ser claro pero no lo hice, de los errores aprendemos gracias


Título: Re: Numeros primos Otro enfoque
Publicado por: Norlak en 24 Noviembre 2011, 22:13 pm


Citar
   

int i;
   int j=1836311903;//maximo valor
         Tabulo tbl=new Tabulo();
             for (int num=1;num<=j;num++){
                    
            
                     for (i=2;num%i!=0 && i<(num-1);i++){        
                     }
                     if (num%i!=0 || num==2){

incluso le he creado un modulo para que los tabule y no quede tan basto la lista

Citar
int columna=0;//Ponemos columna a cero, para que cuando se imprima las columnas que queramos, vuelva a imprimir en la primera columna
   
    void tabulando (int suma){//este metodo recibe un numero.
   
            System.out.format("%15d" ,suma);//aqui imprime el numero suma, el espacio de impresion lo da el %20, la d significa entero
            columna++;//sumamos las columnas.
            if (columna==7){//5 son las columnas que vamos a imprimir
                    System.out.println();//Aqui damos un salto de linea
                    columna=0;//ponemos columna a 5 para que empiece desde la columna 1 a imprimir de nuevo
                           
            }
           
    }
   


}



Gracias a todos en especial, a Edu,RyogiShiki,MadPitbull, y todos los que por lo menos han intentado hecharme una mano. gracias


Título: Re: Numeros primos Otro enfoque (solucionado Pag:2)
Publicado por: $Edu$ en 24 Noviembre 2011, 22:26 pm
Bueno no se entiende si lo terminaste mirando el codigo, que no entiendo nada pero bueno felicitaciones si lo lograste entender y hacerlo.