1

Тема: 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