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

我的杨辉三角,刚费老劲做出来,还未精简:
  1. @echo off
  2. del num.txt
  3. setlocal ENABLEDELAYEDEXPANSION
  4. set /p n=请输入层数,不要超过30.
  5. for /l %%i in (1,1,%n%) do (
  6.   set ln=%%i
  7.   set a1=1
  8.   set a!ln!=1
  9.   set num=1
  10.   if %%i geq 3 (
  11.   set /a r1=2
  12.   set /a r2=!ln!-1
  13. for /l %%j in (!r1!,1,!r2!) do (
  14. set col=%%j
  15. set /a r3=%%j-1  
  16. set /a r4=!ln!-2  
  17. call :aaa
  18. )
  19.    )
  20. if !ln! geq 2 for /l %%m in (2,1,!ln!)   do (set num=!num! !a%%m!)
  21. echo !num! >> num.txt
  22.   )
  23. start num.txt
  24. goto :eof
  25. :aaa
  26. for /f "skip=%r4% tokens=%r3%,%col%" %%k in (num.txt) do set /a a%col%=%%l+%%k
复制代码

TOP

本帖最后由 linqing8 于 2011-4-28 09:26 编辑

正整数质数因子分解,经过优化,对大数字分解速度较快,效率比此贴前两个高。最大计算能力为32位二进制。如分解1999999999=31*64516129本人机子上不到4秒。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :begin
  4. set /p num=请输入一个正整数:
  5. set /a n=0,num0=%num%
  6. :cccc
  7. set loop=10000
  8. if %num%  GTR 10000 set /a loop=%num%/100
  9. if %num%  GTR 1000000 set /a loop=%num%/1000
  10. if %num%  GTR 100000000 set /a loop=%num%/10000
  11. if %num%  GTR 10000000000 set /a loop=%num%/100000
  12. if !num!  gtr 1 (
  13.     for /l %%i in (2,1,%num%) do (
  14.         set /a num2=%%i
  15.         set /a num1=!num!%%!num2!
  16.         if %%i GTR %loop% (set /a n=n+1
  17.              set /a pr!n!=!num!
  18.              call :ca1
  19.              )
  20.        if !num1!==0 (set /a n=n+1
  21.             set /a num=!num!/%%i
  22.             set /a pr!n!=%%i
  23.             if %%i==%num% (call :ca1) else (call :cccc)
  24.             )
  25.        )
  26. ) else (set pr1=1)
  27. goto :eof
  28. :ca1
  29. set prime=!pr1!
  30. if !n! gtr 1 ( for /l %%j in (2,1,!n!) do (rem echo !pr%%j!  & pause
  31.    set prime=!prime!×!pr%%j!
  32.    )
  33. )
  34. echo %num0%分解为质数因子结果为:%num0%=!prime!
  35. echo.&echo.&goto begin
  36. pause>nul
复制代码

TOP

返回列表