使用批处理脚本我想检查用户输入的数字是否是一个完美的正方形,如果没有找到最接近的正方形数字。
@echo off && cls
Set /p input=
if %input% == PERFECT SQUARE echo perfect square
If %input% not == PERFECT SQUARE do (
::find closest perfect square
答案 0 :(得分:3)
编辑:我做了一个小mod。获得最接近的完美正方形,而不是最小。
@echo off
setlocal
cls
set /P "N=Enter a number: "
set /A "x=N/(11*1024)+40, x=(N/x+x)>>1, x=(N/x+x)>>1, x=(N/x+x)>>1, x=(N/x+x)>>1, x=(N/x+x)>>1, x+=(N-x*x)>>31, M=x*x"
if %N% equ %M% (
echo %N% is perfect square
goto :EOF
)
set /A "I=(x+1)*(x+1), ID=I-N, MD=N-M"
if %ID% lss %MD% set M=%I%
echo The closest perfect square is %M%
答案 1 :(得分:1)
@echo off && cls
setlocal enabledelayedexpansion
set /p input=
set j=0
for /l %%i in (0,1,%input%) do (
set /a test=%%i*%%i
if !test! equ %input% (
echo perfect square
goto:brk1
)
if !test! gtr %input% (
set /a delta=!test!-!input!
set /a test0=!j!*!j!
set /a delta0=!input!-!test0!
if !delta0! lss !delta! (set /a s=!j!) else (set /a s=%%i)
set /a result=!s!*!s!
echo closest perfect square: !result!
goto:brk1
)
set j=%%i
)
:brk1