[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (0 2 4 5 6 8) do set "_%%i=a"
  3. echo 1-1000內的素數如下:>素數.txt
  4. for /l %%a in (1,1,1000) do (
  5.      set "str=%%i"
  6.      if not defined _!str:~-1! (
  7.        set /a a=%%a/2+1,num=0
  8.        call :lp %%a
  9.      )
  10. )
  11. start 素數.txt
  12. goto :eof
  13. :lp
  14. for /l %%i in (1,1,%a%) do (
  15.      set /a b=%1/%%i*%%i
  16.      if !b! equ %1 set /a num+=1
  17.      if !num! equ 2 goto :eof
  18. )
  19. if %num% lss 2 echo %1 >>素數.txt
复制代码
***共同提高***

TOP

二樓的代碼效率是個問題,完全可以不要驗證一個數所有的約數,除本身外只要約數大於兩個就可以判斷出不是素數了。
***共同提高***

TOP

原帖由 youxi01 于 2008-10-31 22:25 发表
稍微修整:@echo off 2>nul 3>nul
setlocal enabledelayedexpansion
for /l %%i in (3 2 1000) do (
        set flag=0
        for /l %%j in (3 2 37) do set /a 1/^(%%i%%%%j^) ||set/a flag+=1
        if !flag! LEQ 1 echo %% ...

体现出兄扎实的数学功底,真是望尘莫及啊!
***共同提高***

TOP

返回列表