新しいこととして、バッチスクリプト(https://projecteuler.net/problem=5)を使用して、プロジェクトオイラー問題5を完了しようとしています。しかしながら;私はいくつかの問題にぶつかってきました。もし誰かが私のコードを乗り越えることができれば、それは素晴らしいだろう。行うことに意味は何バッチスクリプト内でモジュラス演算を実行する
@ECHO off
SET init=1
SET iter=1
SET /a func=%init% %% %iter%
cls
:Num
IF func==0 (
IF iter==20 (
ECHO Val = %init%
pause
exit
) ELSE (
SET /a iter+=1
GOTO Num
)
) ELSE (
SET iter=1
SET /a init+=1
GOTO Num
)
init mod iter
は0を返し、それがない場合、それはしかし、21に到達するまで、iter
値に1を加えるかどうかをチェックしています。 0に等しくなければ、反復カウントは0に設定され、再び計算が開始されます。
起こることを意味しているものの例:
1 mod 1 = 0, Therefor add 1 to iter
1 mod 2 != 0, Therefor init is set to 0 and 1 is added to init
2 mod 1 = 0, Therefor add 1 to iter
2 mod 2 = 0, Therefor add 1 to iter
2 mod 3 != 0, Therefor init is set to 0 and 1 is added to init
などなどなど。
起こる何をするかの例:
1 mod 1 != 0, Therefor add 1 to init
2 mod 1 != 0, Therefor add 1 to init
3 mod 1 != 0, Therefor add 1 to init
などなどなど。
ご協力いただきありがとうございます。 (!?):これについてどのように
私はコードを少し変更しましたが、今度はモジュラス計算を完全にスキップし、1 mod 1〜20 = 0と言います。なぜこれを行うのか? オフ '@ECHO initのSET = 1 SET ITER = 1 SET/FUNC = "%INIT%%%%ITER%" CLS: "%のFUNC%の" IF民 ==「0 「( \t IF "%%ITER" == "21"( \t \tエコー。 \t \t ECHOヴァル=%のinit% \t \tエコー。 \t \tプレス終了する任意のキーをエコーする。。。 \t \t p ause> nul \t \t exit \t)ELSE( \t \t echo%init%mod%iter%= 0; CONT \t \t SET/ITER + = 1 \t \t GOTO民 \t) )ELSE( エコー%INIT%MOD%ITER%!= 0; \t SET ITER = 1 \t SET/INIT + = 1 \t GOTO民 )醜い書式のため申し訳ありません ' を破ります。 – Sennsei
あなたは決して '%func%'を再計算しません。 – SomethingDark
これはどのように組み込むのですか? – Sennsei