Reacomode el codigo y lo parametrice, ahora se puede trabajar totalmente desde Consola.
Aun asi le hace falta hacerle una optimizacion....si alguno quiere trabajarle...pues bienvenido sea
Saludos.
Código [Seleccionar]
@echo off
REM Funcion de Numeros Primos
REM Coded by :: SmartGenius ::
setlocal enabledelayedexpansion
if ["%1"]==[""] goto :syntaxis
if ["%2"]==[""] goto :syntaxis
set num=%2
set /a c=%num:~0,1%*1
if not %c%==%num:~0,1% (echo Parametro Numerico Invalido &goto :syntaxis)
if ["%1"]==["/c"] call :cprimo %2
if ["%1"]==["/n"] call :nprimo %2
if ["%1"]==["/t"] call :tprimo %2
if ["%1"]==["/d"] call :dprimos %2
if ["%1"]==["/p"] call :pprimos %2
if ["%1"]==["/h"] call :syntaxis
if ["%1"]==["/?"] call :syntaxis
endlocal
goto :eof
::Numero Primo
:cprimo
set primo=True
set /a lim=%1-1
for /l %%a in (2,1,%lim%) do (
set /a p=%1%%%%%a
if !p!==0 set primo=False)
echo %primo%
goto :eof
::Primo mas Cercano de un Numero
:nprimo
set lim2=%1
for /l %%b in (1,1,%lim2%) do (
call :cprimo %%b >nul
if !primo!==True set near=%%b)
echo %near%
goto:eof
::N-esimo Termino de la Sucesion de Numeros Primos
:tprimo
set lim3=%1
set l=1
set cont=1
:tprimo2
call :cprimo %cont% >nul
if !primo!==True call :tprimo3 %cont%
if defined tprimo echo %tprimo% &goto :eof
set /a cont=%cont%+1
goto :tprimo2
:tprimo3
if %l%==%lim3% set tprimo=%1
set /a l=%l%+1
goto :eof
::Descomposicion de un Numero en Factores Primos
:dprimos
set lim4=%1
call :cprimo %lim4% >nul
if !primo!==True (echo 1*%lim4% &goto :eof)
for /l %%n in (2,1,%lim4%) do (
call :cprimo %%n >nul
if !primo!==True call :dprimos2 %lim4% %%n
)
echo %op:~1%
goto :eof
:dprimos2
set val=%1
:dprimos3
set var=%op%
set /a c=%var:~1%
if %c% GEQ %lim4% goto :eof
set /a mod=(%val%)%%(%2)
if %mod%==0 set op=%op%*%2& set /a val=(%val%)/(%2)&goto :dprimos3
goto :eof
::Simplificacion de Cadenas
:pprimos
set cadena=%1
call :string %cadena%
:func
for /l %%f in (1,1,%len%) do (call :func2 %%f)
for /l %%g in (1,1,%len%) do (call :func3 %%g)
set oper=%oper:l1=%
set oper=%oper:l=^^^^%
echo %oper:~1%
goto :eof
:func2
set lim5=%1
for /f "tokens=%lim5% delims=*" %%k in ("%cadena%") do (call :add %%k)
goto :eof
:func3
set lim6=%1
for /f "tokens=%lim6% delims=*" %%j in ("%cadena%") do (call :var %%j)
goto:eof
:var
set t1=%1
if not defined t%t1% call :var2 %t1%
goto:eof
:var2
call set var=!p%1!l!n%1!
set t%1=%1
set oper=%oper%*%var%
goto :eof
:add
set /a n%1+=1
set p%1=%1
goto:eof
:string
set texto=%1
set len=0
:string2
if not "%texto:~0,1%"=="" (set /a len=%len%+1)
set texto=%texto:~1%
if "%texto%"=="" goto :eof
goto :string2
:syntaxis
echo. -------------------------------
echo ^| Funciones de Numeros Primos ^|
echo ^| Coded by :: SmartGenius :: ^|
echo -------------------------------
echo Modo de Uso
echo.
echo %~n0 [Modificadores] Numero^|Operacion
echo Ej: %~n0 /c Variable Numerica
echo.
echo Modificadores:
echo /c Comprueba si el Numero Introducido es Primo
echo devolviendo un valor de True o False
echo /n Imprime en Pantalla el Primo mas Cercano del
echo Numero introducido.
echo /t Imprime en Pantalla el N-esimo Termino de la
echo Sucesion de Numeros Primos.
echo /d Descompone un Numero en sus Factores Primos.
echo /p Simplifica una Cadena de Operaciones
echo Ej: 2*2*2*3*3*5 --^> 2^^3*3^^2*5
echo.
echo. /h^| /? Muestra esta ayuda.
goto :eof
Aun asi le hace falta hacerle una optimizacion....si alguno quiere trabajarle...pues bienvenido sea
Saludos.