作爲新的東西,我試圖使用批處理腳本(https://projecteuler.net/problem=5)來完成Project Euler Problem 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,如果確實如此,加1到iter
值,直到它達到21.不過,如果它不等於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關閉 SET初始化= 1名 SET ITER = 1個 SET/FUNC一個= 「%INIT%%%%ITER%」 CLS :貨號 IF 「%FUNC%」 ==「0 「( \t IF 」%ITER%「 == 」21「( \t \t回波。 \t \t ECHO纈氨酸=%初始化% \t \t回波。 \t \t回聲按任何鍵退出。 \t \t p澳洲英語> NUL \t \t出口 \t)ELSE( \t \t回波%初始化%MOD%ITER%= 0; CONT \t \t SET /一個ITER + = 1 \t \t GOTO貨號 \t) )ELSE( 回波%初始化%MOD%ITER%!= 0; BREAK \t SET ITER = 1 \t SET /一個INIT + = 1 \t GOTO貨號 )' 很抱歉的醜陋格式化。 – Sennsei
你從不重新計算'%func%'。 – SomethingDark
我該如何加入? – Sennsei