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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [batch] Problema extraño
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [batch] Problema extraño  (Leído 3,449 veces)
kraszic

Desconectado Desconectado

Mensajes: 277


Ver Perfil
[batch] Problema extraño
« en: 9 Julio 2008, 23:15 pm »

Buenas, el otro dia me decidi a hacer un programa q saque todos los numeros primos desde el 0 hasta el 10000 o los q quisiera y q aparte hiciera mas cosas.
Para empezar, hice un codigo q instalara todos los numeros del 0 hasta 10000 en un archivo.txt. Todo funciona bien pero cuando llega sobre el valor 300 el programa se cierra misteriosamente.

Lo abri con la cmd y me sale este error:



Este es el codigo del programa:
Código
  1. echo Se instalaran todos los numeros primos hasta 10000.
  2. echo Espere mientras se instalan los numeros.
  3. echo Al final aparecera un mensaje.
  4. echo LISTA DE NUMEROS PRIMOS >primos.txt
  5. echo. >>primos.txt
  6. echo 2 >>primos.txt
  7. echo 3 >>primos.txt
  8.  
  9. set num=4
  10. :inicio
  11. set num2=1
  12. set /a num=%num%+1
  13. if %num%==10000 goto acaba
  14. :inicio2
  15. set /a num2=%num2%+1
  16.  
  17. for /f "tokens=1 skip=%num2%" %%a in (primos.txt) do call :func %%a
  18. :func
  19. set cru=%1
  20. set /a pro1=%num%/%cru%
  21. set /a res=%num%-(%cru%*pro1)
  22. if %res%==0 goto inicio
  23. if %cru% GTR %pro1% goto fuera
  24. goto inicio2
  25.  
  26. :fuera
  27. echo %num% >>primos.txt
  28. goto inicio
  29.  
  30. :acaba
  31. echo Instalado
  32. pause>nul

Bueno, por si alguien no lo sabe, el procedimiento q he tomado para calcular si un numero es primo, es dividir el numero en cuestion por todos los numeros primos empezando por el 2, cuando el divisor (numero primo) es mayor q el quociente, ese numero es primo.

A ver, si alguien entiende el error y si se puede hacer algo para q no pase esto.

saludos


En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: [batch] Problema extraño
« Respuesta #1 en: 10 Julio 2008, 00:44 am »

[Modificado] Dejo el code actualizado más abajo.


« Última modificación: 10 Julio 2008, 01:34 am por carlitos.dll » En línea

kraszic

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: [batch] Problema extraño
« Respuesta #2 en: 10 Julio 2008, 01:10 am »

Bueno, al final no se porq me empeñe tanto con lo del for para q cogiera los numeros primos...
Igualmente, si cogemos todos los numeros, el programa funciona bastante rapido, asi q lo dejere asi.

La modificacion q he hecho es en vez de ir de uno en uno, coger un numero impar e ir de dos en dos ya que todos los numeros pares no son primos.

saludos
En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: [batch] Problema extraño
« Respuesta #3 en: 10 Julio 2008, 01:16 am »

buen dato kraszic, es decir solo el dos es par y es primo, y con el dato que diste se puede hacer el cálculo mucho más rápido. Ahora leí que los que terminan en 5, y son mayores que 5, son múltiplos de 5, así es que no son primos.

Aquí modifiqué el code, para que quedara más rápido.

Código:
::CarlitoS.dll
::Graba en archivo numeros primos

@echo off

set /a inicio=2
set /a fin=10000

if %inicio% LEQ 2 (set /a inicio=3 & call :divi 2)
for /l %%n in (%inicio%,2,%fin%) do call :divi %%n
goto :eof

:divi
cls & echo Working . .
set esPrimo=false
set /a divini=1
set /a divfin=%1
if %divfin:~-1%==5 (if %1 GTR 5 (goto :eof))
call :divi2 %1
if %esPrimo%==true (echo %1 >>primos.txt)
goto :eof

:divi2
cls & echo Working . . .
if %esPrimo%==true (goto :eof)
set /a divini +=1
if %divini% GTR %divfin% (goto :eof)
set /a mod=%1-(%1/%divini%*%divini%)
if not %mod%==0 (goto divi2)
if %mod%==0 (if not %1==%divini% (set esPrimo=false) else (set esPrimo=true))
goto :eof

« Última modificación: 10 Julio 2008, 20:11 pm por carlitos.dll » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH]Problema con delimitadores xD
Scripting
FranciskoAsdf 4 5,777 Último mensaje 27 Marzo 2011, 09:08 am
por FranciskoAsdf
Tengo un problema con batch¡¡¡
Scripting
Mr.como21 2 2,564 Último mensaje 9 Mayo 2011, 11:13 am
por SuperDraco
Problema con batch
Scripting
pandozales12 7 3,480 Último mensaje 3 Julio 2011, 22:58 pm
por pandozales12
problema con batch
Scripting
0xDani 2 2,474 Último mensaje 21 Abril 2012, 00:34 am
por Eleкtro
[BATCH]Problema con IF LSS
Scripting
Segadorfelix 9 5,114 Último mensaje 24 Diciembre 2012, 19:32 pm
por Binary_Death
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines