[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
发一个素数查找的
有一定缺陷,理论上数字可以是2^31以内,但只能到13000左右。
原因是set命令只能有8K字符长度,超过8K的话bat设置的set命令全部清除,也就造成后面代码出错。
这个效率应该可以!
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. if %1.==. (set i=100) else set /a i=%1||exit/b
  3. set time_0=!time!
  4. set "p=2 3 5 7 11 13 17 19"
  5. for %%a in (!p!) do (if %%a gtr !i! (exit/b) else echo %%a)
  6. set i_0=!i:~0,-1!
  7. set "p=3 7 11 13 17 19"
  8. for /l %%a in (2,1,!i_0!) do (
  9.     for %%b in (1 3 7 9) do (
  10.         set p_0=!p!
  11.         set /a x_%%b=0
  12.         for %%c in (!p_0!) do (
  13.             if !x_%%b! equ 0 (
  14.                set /a p_1=%%a%%b %% %%c
  15.                if !p_1! equ 0 set /a x_%%b=1,p_0=1
  16.             )
  17.         )
  18.         if %%a%%b gtr !i! (echo 开始时间:!time_0!&echo 结束时间:!time!&exit/b) else (
  19.            if !x_%%b! equ 0 set "p=!p! %%a%%b"&echo %%a%%b
  20.         )
  21.     )
  22. )
  23. exit/b
复制代码

TOP

返回列表