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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Reto Batch] Generador de numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Reto Batch] Generador de numeros primos  (Leído 6,126 veces)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
[Reto Batch] Generador de numeros primos
« en: 11 Mayo 2012, 20:13 »

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




« Última modificación: 18 Mayo 2012, 19:55 por EleKtro H@cker » En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [Reto Batch]
« Respuesta #1 en: 11 Mayo 2012, 20:41 »

HOLA!!!

no es solucoin del reto pero es para que vean el codigo ;)

Código
  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. ECHO VERIFICADOR DE NUMEROS PRIMOS POR 79137913
  4. ECHO EJEMPLO:
  5. ECHO Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13
  6. ECHO Salida: 1 1 1 0 1 0 1 0 0 0 1 0 1
  7. SET /P N=INSERTE UNA CADENA DE NUMEROS A VERIFICAR SEPARADOS POR UN ESPACIO:
  8. :NEXTNUM
  9. IF "%FIN%"=="1" GOTO SHOWNUMS
  10. SET RN=
  11. :NEXTCHAR
  12. call set CHAR=%%N:~%NUM%,1%%%
  13. set /a NUM+=1
  14. IF "%CHAR%" EQU " " (GOTO EMPIEZA)
  15. IF "%CHAR%" EQU "" SET FIN=1
  16. IF "%CHAR%" EQU "" (GOTO EMPIEZA)
  17. SET RN=%RN%%CHAR%
  18. GOTO NEXTCHAR
  19. :EMPIEZA
  20. SET X=%RN%
  21. SET Y=%X%
  22. SET CT=0
  23. :LOOP
  24. SET /A Y=%Y%-1
  25. IF !Y!==0 GOTO ISPRIME
  26. SET /A CHECK= %X% %% Y
  27. IF !CHECK!==0 (SET /A CT=%CT%+1)
  28. IF !CT!==2 GOTO NOTPRIME
  29. GOTO LOOP
  30. :NOTPRIME
  31. SET OUTP=%OUTP% 0
  32. GOTO NEXTNUM
  33. :ISPRIME
  34. SET OUTP=%OUTP% 1
  35. GOTO NEXTNUM
  36. :SHOWNUMS
  37. ECHO %OUTP%

GRACIAS POR LEER!!!


En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Reto Batch]
« Respuesta #2 en: 11 Mayo 2012, 20:43 »

HOLA!!!

no es solucoin del reto pero es para que vean el codigo ;)

Código
  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. ECHO VERIFICADOR DE NUMEROS PRIMOS POR 79137913
  4. ECHO EJEMPLO:
  5. ECHO Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13
  6. ECHO Salida: 1 1 1 0 1 0 1 0 0 0 1 0 1
  7. SET /P N=INSERTE UNA CADENA DE NUMEROS A VERIFICAR SEPARADOS POR UN ESPACIO:
  8. :NEXTNUM
  9. IF "%FIN%"=="1" GOTO SHOWNUMS
  10. SET RN=
  11. :NEXTCHAR
  12. call set CHAR=%%N:~%NUM%,1%%%
  13. set /a NUM+=1
  14. IF "%CHAR%" EQU " " (GOTO EMPIEZA)
  15. IF "%CHAR%" EQU "" SET FIN=1
  16. IF "%CHAR%" EQU "" (GOTO EMPIEZA)
  17. SET RN=%RN%%CHAR%
  18. GOTO NEXTCHAR
  19. :EMPIEZA
  20. SET X=%RN%
  21. SET Y=%X%
  22. SET CT=0
  23. :LOOP
  24. SET /A Y=%Y%-1
  25. IF !Y!==0 GOTO ISPRIME
  26. SET /A CHECK= %X% %% Y
  27. IF !CHECK!==0 (SET /A CT=%CT%+1)
  28. IF !CT!==2 GOTO NOTPRIME
  29. GOTO LOOP
  30. :NOTPRIME
  31. SET OUTP=%OUTP% 0
  32. GOTO NEXTNUM
  33. :ISPRIME
  34. SET OUTP=%OUTP% 1
  35. GOTO NEXTNUM
  36. :SHOWNUMS
  37. ECHO %OUTP%

GRACIAS POR LEER!!!

Me tira error (le falta un operador)
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [Reto Batch]
« Respuesta #3 en: 11 Mayo 2012, 22:58 »

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

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: [Reto Batch]
« Respuesta #4 en: 14 Mayo 2012, 05:14 »

He aquí el código...

Código
  1. @echo off
  2. ::Generar números primos aleatoriamente by batchiano :)
  3. setlocal enabledelayedexpansion
  4.  
  5. :Secuencia
  6. set /a HIGHLIMIT=100
  7. for /l %%S in (2,1,!HIGHLIMIT!) do (
  8. call :NumeroPrimo %%S
  9. if "!PRIMO!"=="TRUE" (
  10. echo Secuencia: %%S es PRIMO
  11. )
  12. )
  13.  
  14. pause&echo.
  15.  
  16. :Aleatorio
  17. ::La arbitrariedad de aparición de los primos no es equiprobable.
  18. set /a key=%random:~0,2%
  19. call :NumeroPrimo !key!
  20. if "!PRIMO!"=="TRUE" (
  21. echo Aleatorio: !key! es PRIMO
  22. pause>nul
  23. )
  24. goto Aleatorio
  25.  
  26. :NumeroPrimo
  27. set /a NUMERO=%1
  28. set PRIMO=TRUE
  29. set /a ICM=1
  30. :EsPrimo
  31. set /a ICM+=1
  32. set /a MOD = %NUMERO% %% !ICM!
  33. if !MOD! EQU 0 (
  34. if !ICM! LSS !NUMERO! (
  35. set PRIMO=FALSE
  36. )
  37. ) else (
  38. goto EsPrimo
  39. )
« Última modificación: 14 Mayo 2012, 05:21 por Batchiano » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [Reto Batch] Generador de numeros primos
« Respuesta #5 en: 22 Julio 2012, 00:46 »

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
« Última modificación: 22 Julio 2012, 06:23 por Binary_Death » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Reto Batch] Generador de numeros primos
« Respuesta #6 en: 22 Julio 2012, 09:15 »

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

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [Reto Batch] Generador de numeros primos
« Respuesta #7 en: 22 Julio 2012, 16:08 »

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

AgnesBlack

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: [Reto Batch] Generador de numeros primos
« Respuesta #8 en: 23 Julio 2012, 02:51 »

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
« Última modificación: 23 Julio 2012, 02:54 por AgnesBlack » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Algoritmo de Numeros Primos
Scripting
SmartGenius 1 4,238 Último mensaje 30 Diciembre 2008, 00:06
por SmartGenius
Algoritmo numeros primos [Batch]
Scripting
leogtz 4 9,220 Último mensaje 15 Junio 2009, 20:44
por SmartGenius
Reto: Números primos en python
Ejercicios
Novlucker 6 7,953 Último mensaje 24 Noviembre 2010, 16:02
por Novlucker
[Reto Batch] Números II (Puntoinfinito) « 1 2 »
Scripting
Eleкtro 12 4,573 Último mensaje 7 Marzo 2014, 03:37
por Dankhrat
[BATCH] Generador de números aleatorios/random
Scripting
Tino 0 1,087 Último mensaje 26 Noviembre 2017, 14:00
por Tino
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines