批量获得最接近完美广场的数字

时间:2016-02-13 19:11:08

标签: batch-file cmd

使用批处理脚本我想检查用户输入的数字是否是一个完美的正方形,如果没有找到最接近的正方形数字。

@echo off  && cls 
Set /p input=
if %input% == PERFECT SQUARE echo perfect square
If %input% not == PERFECT SQUARE do (
::find closest perfect square

2 个答案:

答案 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