|
|
发表于 2009-4-26 03:23:29
|
显示全部楼层
思路:利用牛顿迭代法快速求出数的平方根近似值,从而最大程度上减少循环次数,算法如下:
首先我们设要求的这个数为a,它的平方根为x;然后我们一开始令x=a;然后我们进入一个
循环,不断的令x=(x+a/x)/2,就是令x等于 x和a/x的平均值,这样迭代了10次左右就可以得到a
的平方根x的近似值。
因此将本人12楼的代码再次提速如下:- @echo off&setlocal enabledelayedexpansion
- rem write by batman on 2009-4-26 3:20 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,c=a&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,10) do set /a c=(c+a/c)/2
- 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
复制代码
[ 本帖最后由 batman 于 2009-4-26 03:29 编辑 ] |
评分
-
查看全部评分
|