Autor
|
Tema: [Reto Batch] Generador de numeros primos (Leído 8,862 veces)
|
Stakewinner00
|
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 pm por EleKtro H@cker »
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! no es solucoin del reto pero es para que vean el codigo ECHO VERIFICADOR DE NUMEROS PRIMOS POR 79137913 ECHO Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 ECHO Salida: 1 1 1 0 1 0 1 0 0 0 1 0 1 SET /P N=INSERTE UNA CADENA DE NUMEROS A VERIFICAR SEPARADOS POR UN ESPACIO: :NEXTNUM :NEXTCHAR :EMPIEZA :LOOP IF !CHECK!==0 (SET /A CT= %CT%+1 ) :NOTPRIME :ISPRIME :SHOWNUMS
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
|
HOLA!!! no es solucoin del reto pero es para que vean el codigo ECHO VERIFICADOR DE NUMEROS PRIMOS POR 79137913 ECHO Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 ECHO Salida: 1 1 1 0 1 0 1 0 0 0 1 0 1 SET /P N=INSERTE UNA CADENA DE NUMEROS A VERIFICAR SEPARADOS POR UN ESPACIO: :NEXTNUM :NEXTCHAR :EMPIEZA :LOOP IF !CHECK!==0 (SET /A CT= %CT%+1 ) :NOTPRIME :ISPRIME :SHOWNUMS
GRACIAS POR LEER!!! Me tira error (le falta un operador)
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
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
Mensajes: 166
|
He aquí el código... ::Generar números primos aleatoriamente by batchiano :) :Secuencia for /l %%S in (2,1, !HIGHLIMIT!) do ( echo Secuencia: %%S es PRIMO ) ) :Aleatorio ::La arbitrariedad de aparición de los primos no es equiprobable. echo Aleatorio: !key! es PRIMO ) :NumeroPrimo :EsPrimo set /a MOD = %NUMERO% %% !ICM! ) )
|
|
« Última modificación: 14 Mayo 2012, 05:21 am por Batchiano »
|
En línea
|
|
|
|
Binary_Death
Desconectado
Mensajes: 214
|
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 @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
|
|
« Última modificación: 22 Julio 2012, 06:23 am por Binary_Death »
|
En línea
|
|
|
|
Stakewinner00
|
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 @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 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
Mensajes: 214
|
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
|
|
|
En línea
|
|
|
|
AgnesBlack
Desconectado
Mensajes: 44
|
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 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 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 am por AgnesBlack »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Batch] Algoritmo de Numeros Primos
Scripting
|
SmartGenius
|
1
|
6,312
|
30 Diciembre 2008, 00:06 am
por SmartGenius
|
|
|
Algoritmo numeros primos [Batch]
Scripting
|
leogtz
|
4
|
12,607
|
15 Junio 2009, 20:44 pm
por SmartGenius
|
|
|
Reto: Números primos en python
Ejercicios
|
Novlucker
|
6
|
10,416
|
24 Noviembre 2010, 16:02 pm
por Novlucker
|
|
|
[Reto Batch] Números II (Puntoinfinito)
« 1 2 »
Scripting
|
Eleкtro
|
12
|
7,835
|
7 Marzo 2014, 03:37 am
por Dankhrat
|
|
|
[BATCH] Generador de números aleatorios/random
Scripting
|
Tino
|
0
|
3,085
|
26 Noviembre 2017, 14:00 pm
por Tino
|
|