Тема: CMD/BAT: Простые числа
При выполнении "Prime.bat 1000" будет файл "prime.txt" с простыми числами от 2 до 1000
@echo off
setlocal enabledelayedexpansion
if exist prime.txt del prime.txt
Call :fast1 %1 > prime.txt
set p=2
set size=
:loop
set z=0
if exist prime2.txt del prime2.txt
Call :fast2 > prime2.txt
del prime.txt
ren prime2.txt prime.txt
set fp=
for /f %%i in (prime.txt) do (
if not defined fp if %%i gtr !p! set fp=%%i
)
set p=!fp!
for /f %%i in ("prime.txt") do set size=%%~zi
if !size!==!last! exit /b
set last=!size!
goto loop
endlocal
exit /b
:fast1
for /l %%i in (2,1,%1) do Echo %%i
goto :eof
:fast2
for /f %%i in (prime.txt) do (
set /a np=p*p
if %%i lss !np! Echo %%i
if %%i geq !np! (
set /a "t=%%i %% p"
if not !t!==0 (Echo %%i) else (set /a z+=1)
)
)
goto :eof