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