[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
讲究效率的话,应该用Sieve of Eratosthenes(埃拉托斯特尼筛法),但是代码比较长
  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. REM Author: Demon
  4. REM Date: 2011/5/29
  5. REM Website: http://demon.tw
  6. REM Algorithm: Sieve of Eratosthenes
  7. REM Reference: http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
  8. SET /A limit = 1000
  9. SET /A prime = 2
  10. CALL :Init
  11. CALL :SievePrime
  12. CALL :Display
  13. PAUSE & GOTO :EOF
  14. :Display
  15.     FOR /L %%i IN (2, 1, %limit%) DO (
  16.         SET t=!arr[%%i]!
  17.         IF !t! NEQ 0 ECHO !t!
  18.     )
  19. GOTO :EOF
  20. :Init
  21.     FOR /L %%i IN (1, 1, %limit%) DO SET arr[%%i]=%%i
  22. GOTO :EOF
  23. :SievePrime
  24.     SET /A pow = prime * prime
  25.     IF %pow% LSS %limit% (
  26.         SET /A n = prime * 2
  27.         FOR /L %%i IN (!n!, %prime%, %limit%) DO SET arr[%%i]=0
  28.         CALL :NextPrime
  29.         GOTO :SievePrime
  30.     )
  31. GOTO :EOF
  32. :NextPrime
  33.     SET /A prime += 1
  34.     FOR /L %%i IN (%prime%, 1, %limit%) DO (
  35.         IF !arr[%%i]! NEQ 0 SET /A prime = %%i & GOTO :EOF
  36.     )
  37. GOTO :EOF
复制代码

TOP

返回列表