0

数字を単純化された根号形式にするプログラムを Batch で作成しようとしています。数値が完全平方かどうかを確認する方法はありますか?

4

3 に答える 3

2

最も簡単な方法は、埋め込まれた jscript コードを使用することです。数値を受け入れるサブルーチンの例は、数値が平方かどうかに応じて yes または no を出力し、そうであればエラーレベルを 1 に設定します。

@echo off

call :isSquare 81
call :isSquare 7
call :isSquare 9

if errorlevel 1 (
    echo 9 is a square number
)
exit /b %errorlevel%


:isSquare
setlocal
set /a number=%~1

:: Define simple macros to support JavaScript within batch
set "beginJS=mshta "javascript:code(close(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write("
set "endJS=)));""



:: FOR /F does not need pipe
for /f %%N in (
  '%beginJS% Math.sqrt(%number%) %endJS%'
) do set sqrt=%%N

if "%sqrt%" equ "%sqrt:.=%" (
    echo Yep!
    endlocal & exit /b 1

) else (
    echo Nope!
    endlocal & exit /b 0
)

endlocal

今、私は純粋なバッチ ソリューションについて考えています (すべての 34 ビット平方数のリストをチェックしている可能性がありますか?)

于 2016-03-02T21:22:15.933 に答える