修改我楼上的,用位运算取得数的平方根近似值,以减少循环次数:- @echo off&setlocal enabledelayedexpansion
- rem write by batman on 2009-4-25 15:51 of bbs.bathome.net
- set /p a=请输入一个大于6的偶数:
- set "t=%time:~,-3%"
- for /l %%a in (3,2,%a%) do (
- set /a b=a-%%a,n=0&call :lp %%a !b!
- if !n! equ 2 (
- echo 开始时间:%t% 结束时间:!time:~,-3!
- echo %a%=%%a+!b!&goto next
- )
- )
- :next
- pause>nul&goto :eof
- :lp
- for /l %%a in (1,1,30) do (
- set /a "num=2<<%%a",yu=%%a%%2
- if %%a equ 30 set /a "num=~num"
- if !num! geq %1 set /a "c=2<<%%a/2+yu"&goto loop
- )
- :loop
- for /l %%a in (3,2,%c%) do (
- if %%a neq %1 set /a d=%1%%%%a
- if !d! equ 0 goto :eof
- )
- set /a n+=1
- if "%2" neq "" shift&goto lp
复制代码
|