作为新的东西,我试图使用批处理脚本(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