标题: [数值计算] 批处理穷举法计算开方 [打印本页]
作者: irresolute 时间: 2009-2-10 20:01 标题: 批处理穷举法计算开方
- @echo off
- :Main
- cls
- set x=
- set n=
- set /p x= 请输入被开方的数:
- set /p n= 请输入开方次数:
- set /a mod=%n%%%2
- if %x% equ 1 (
- echo.
- echo %x% 的 %n% 次方根是 1
- echo.
- pause
- goto Main
- )
- set /a quotient=x/n
- set flag=
- for /l %%i in (2,1,%quotient%) do (
- set num=%%i
- for /l %%j in (2,1,%n%) do (
- set /a num=%%i*!num!
- )
- if !num! equ %x% (
- echo.
- if %mod% equ 0 (
- echo %x% 的 %n% 次方根是 ±%%i
- ) else echo %x% 的 %n% 次方根是 %%i
- echo.
- set flag=1
- goto end
- )
- )
- :end
- if not defined flag (
- echo.
- echo %x% 的 %n% 次方根不是整数
- echo.
- )
- pause
- goto Main
复制代码
作者: BBCC 时间: 2009-2-10 20:19
原创的?
不错啊.
作者: namejm 时间: 2009-2-10 20:38
呵呵,楼主应该交代一下代码的背景吧?
作者: irresolute 时间: 2009-2-10 21:50
这是穷举法
前面少了句setlocal enabledelayedexpansion
不是原创,只是看到了算法,拿了来共享
作者: irresolute 时间: 2009-2-10 21:52
批处理我还是小儿科,请大家多多关照
作者: batman 时间: 2009-2-10 22:31 标题: 即兴写的,凑个热闹了
- @echo off&setlocal enabledelayedexpansion
- set /p a=请输入要开方的整数:
- set "b=2"&set "c=1"
- set /p b=请输入要保留的小数位(最好是三位以内,默认回车为两位):
- set /a b*=2
- for /l %%a in (1,1,%b%) do set /a c*=10
- set /a a*=c,d=a/2+1
- for /l %%a in (1,1,%d%) do (
- set /a e=%%a*%%a
- if !e! equ %a% set /a e=%%a&goto next
- if !e! gtr %a% set /a e=%%a-1&goto next
- )
- :next
- set /a b/=2
- set "f=!e:~-%b%!"
- echo 开出的平方根为±!e:%f%=!.%f%
- pause>nul
复制代码
[ 本帖最后由 batman 于 2009-2-10 23:24 编辑 ]
作者: Batcher 时间: 2009-2-11 00:58 标题: 回复 4楼 的帖子
请更新顶楼的代码
作者: moshou 时间: 2009-2-15 15:57
ls的各位大大
lz的帖子中那个mod变量为什么在后面用的时候是用%mod%而不是!mod!我发现两种情况是一样的
作者: yunyan100 时间: 2018-9-11 21:14
[ 本帖最后由 batman 于 2009-2-10 23:24 编辑 ]
batman 发表于 2009-2-10 22:31
开方好,就是时间长些
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |