[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理搜索素数(1~100000)

  1. ::code by youxi01@bbs.bathome.net,2006-10-3
  2. ::说明:搜索素数(质数),在1~100000之间的素数搜索较快.
  3. ===================cut here====================
  4. @echo off
  5. ::将素数5、7写入文件
  6. echo 5 >Result.txt
  7. echo 7 >>Result.txt
  8. ::------------------
  9. set /a Num1=2
  10. set /a Num2=3
  11. set /a Num=10
  12. ::启用"延迟环境变量"
  13. setlocal enabledelayedexpansion
  14. ::-----------------------------
  15. :Start
  16. set /a Num=%Num%+1
  17. title 正在检测:%Num%
  18. ::求余数
  19. set /a Num3=%Num%%%Num1%
  20. set /a Num4=%Num%%%Num2%
  21. ::------------------------
  22. ::如果能被2或3整除,就直接跳到Start(以免频繁读写Result.txt)。
  23. if %Num3% EQU 0 goto :Start
  24. if %Num4% EQU 0 goto :Start
  25. ::---------------------------------------------------------
  26. for /f %%i in (Result.txt) do (
  27. set /a T=%%i
  28. set /a S=%%i*%%i
  29. rem 如果S(平方)都比数字%Num%小,就看它能否整除变量%Num%,如果能,则判断为合数,跳出循环;
  30. rem 否则(即%Num%的平方根内无数字能整除%Num%)就直接将%Num%记入结果,跳出循环。
  31. if !S! leq %Num% (
  32. set /a T1=%Num%%%!T!
  33. if !T1! EQU 0 goto :Start
  34. ) else echo %Num%>>Result.txt & goto :Start
  35. rem ------------------------------------------
  36. )
  37. pause
复制代码

一、快
二、简洁(对我来说~)

TOP

返回列表