gpt4 book ai didi

batch-file - 在批处理脚本中执行模算术

转载 作者:行者123 更新时间:2023-12-03 17:39:58 25 4
gpt4 key购买 nike

作为新事物,我正在尝试使用批处理脚本 ( 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,如果是,则在 iter 上加 1值,直到达到 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

等等等等。

任何帮助表示赞赏,谢谢。

最佳答案

这个怎么样:

@Echo off
setlocal enabledelayedexpansion
SET init=1
SET iter=1
cls
set loopCounter=1
set loopBatch=1

:numLoop
SET /a func="!init! %% !iter!"
IF !iter! == 21 (goto :done)
IF !func! == 0 (call :incIter) ELSE ( call :incInit)
SET /a loopCounter+=1
SET /a loopBatch="%loopCounter% %% 1000"
if !loopBatch! == 0 (echo %loopCounter% iterations done)
goto :numLoop

:incInit
rem echo %init% mod %iter% == %func%; Increasing init
SET iter=1
SET /a init+=1
goto :eof

:incIter
rem echo %init% mod %iter% == %func%; Increasing iter
SET /a iter+=1
goto :eof

:done
echo.
ECHO Val = %init%

关于batch-file - 在批处理脚本中执行模算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com