Título: [Reto Batch] Generador de numeros primos Publicado por: Stakewinner00 en 11 Mayo 2012, 20:13 pm Aquí pueden comentar todo lo que quieran, sus dudas, avances o soluciones acerca del siguiente reto:
Reto Nombre: Generador de numeros primos Dificultad: 2/10 Objetivo: Crear un bat que genere numeros primos lo mas rapido possible y numeros primos aleatorios lo mas rapido possible Pista: No os compliqueis la vida Título: Re: [Reto Batch] Publicado por: 79137913 en 11 Mayo 2012, 20:41 pm HOLA!!!
no es solucoin del reto pero es para que vean el codigo ;) Código
GRACIAS POR LEER!!! Título: Re: [Reto Batch] Publicado por: Stakewinner00 en 11 Mayo 2012, 20:43 pm HOLA!!! no es solucoin del reto pero es para que vean el codigo ;) Código
GRACIAS POR LEER!!! Me tira error (le falta un operador) Título: Re: [Reto Batch] Publicado por: 79137913 en 11 Mayo 2012, 22:58 pm HOLA!!!
Es por que pusiste mal la entrada pone la entrada como corresponde como por ejemplo: "1 2 3 4 5 6 7 8 9 10 11 12 13" y va a andar GRACIAS POR LEER!!! Título: Re: [Reto Batch] Publicado por: BatchianoISpyxolo en 14 Mayo 2012, 05:14 am He aquí el código...
Código
Título: Re: [Reto Batch] Generador de numeros primos Publicado por: Binary_Death en 22 Julio 2012, 00:46 am Pues no es la mejor manera de hacerlo, pero yo había hecho una cosilla hace un tiempo que para este reto me irá como anillo al dedo :rolleyes:
Código: @Echo Off SetLocal EnableDelayedExpansion Title Criba de Eratostenes ::Coded By Binary_Death Set/P "Utl=Until >> " :_Main Set/A "ActN=1" For /l %%z in (2,1,%Utl%) do ( Set "Lst=!Lst! %%z" ) :_LoopA For /f "Tokens=%ActN% Delims= " %%n in ("%Lst%") do ( Set/A "Qrd=%%n*%%n" If !Qrd! GTR %Utl% GoTo:_EndA For %%l in (%Lst%) Do ( Set/A "Rst=%%l%%%%n" If %%l EQU %%n Set/A "Rst=1" If !Rst! NEQ 0 Set "NLst=!NLst! %%l" ) Set "Lst=!NLst!" & Set "NLst=" & Set/A "ActN+=1" ) Goto:_LoopA :_EndA Echo.&Echo.%Lst% Pause > NUL Exit Ale, espero que se me dé por válido. PD: "Until >> " es hasta el número que vas a extraer los primos. Por ejemplo, si pones 100, obtendrás todos los primos del 1 al 100. Si pones 1000, pues lo dicho. Tiene un límite, no puesto por mí, sino por la cmd y los métodos que usa el programa. Ese límite es "1851". Un número más grande rompe el programa :P Título: Re: [Reto Batch] Generador de numeros primos Publicado por: Stakewinner00 en 22 Julio 2012, 09:15 am Pues no es la mejor manera de hacerlo, pero yo había hecho una cosilla hace un tiempo que para este reto me irá como anillo al dedo :rolleyes: Código: @Echo Off SetLocal EnableDelayedExpansion Title Criba de Eratostenes ::Coded By Binary_Death Set/P "Utl=Until >> " :_Main Set/A "ActN=1" For /l %%z in (2,1,%Utl%) do ( Set "Lst=!Lst! %%z" ) :_LoopA For /f "Tokens=%ActN% Delims= " %%n in ("%Lst%") do ( Set/A "Qrd=%%n*%%n" If !Qrd! GTR %Utl% GoTo:_EndA For %%l in (%Lst%) Do ( Set/A "Rst=%%l%%%%n" If %%l EQU %%n Set/A "Rst=1" If !Rst! NEQ 0 Set "NLst=!NLst! %%l" ) Set "Lst=!NLst!" & Set "NLst=" & Set/A "ActN+=1" ) Goto:_LoopA :_EndA Echo.&Echo.%Lst% Pause > NUL Exit Ale, espero que se me dé por válido. PD: "Until >> " es hasta el número que vas a extraer los primos. Por ejemplo, si pones 100, obtendrás todos los primos del 1 al 100. Si pones 1000, pues lo dicho. Tiene un límite, no puesto por mí, sino por la cmd y los métodos que usa el programa. Ese límite es "1851". Un número más grande rompe el programa :P Buen script genera los numeros de forma muy rapida, lastima que tenga ese tope. Pero de todas formas lo considero valido. PD:Pensaba que este tena ya se havia quedado olvidado jaja. Título: Re: [Reto Batch] Generador de numeros primos Publicado por: Binary_Death en 22 Julio 2012, 16:08 pm Se puede arreglar el límite, al fin y al cabo. Sería sólo partir la lista de números en trozos.
Eso se lo dejo a cada uno. Yo este script lo hice un día que no tenía la tabla a mano y necesitaba trabajar con ellos :xD Título: Re: [Reto Batch] Generador de numeros primos Publicado por: AgnesBlack en 23 Julio 2012, 02:51 am bueno aun poco se de bath pero lo hice en pascal y decidi dejarlo en pseucodigo para no ser sucio en mezclar lenguaje
bueno este es en pseucodigo Código: Iniciar x=2,cont=0,s=1 Ingresar CP(Cantidad de primos) Iniciar m=0 Mientras cont<cp hacer pd[m+1]=1 iniciar r=1 Mientras mod[x,[pd]]<>0 hacer r=r+1 preguntar si r>m si es verdadero mostrar x + mensaje"es primo" hacer m=m+1 hacer pd[m]=x hacer cont=cont+1 preguntar x=3 si es verdadero s=2 si es falso (queda vacio) si es falso (queda vacio) hacer x=x+s (aca vuelve al ciclo de arriba) y una mejora que le hice y es mas eficiente corre mas rapido en pascal es el siguiente Código: iniciar x=2 , cont=0 ingresar lim (el limite de primos ah buscar) iniciar m=0 mientras cont<lim hacer pd[m+1]=1 iniciar r=1 mientras mod[x;pd[r]]<>0 hacer r=r+1 preguntar r>m si es verdadero muestro x y mensaje "es primo" hacer m=m÷1 hacer pd[m]=x si es falso queda vacio hacer x=x+1 hacer cont =cont+1 y de aca vuelve al ciclo bueno es lo que haria para generar el limite de numeros primos lo probe y en pascal bueno funciona hasta 32000 lo max hay que usar el longint para generar numeros mayores bueno saludos y disculpen por no pasarlo a bath |