我正在尝试制作一个批处理文件来解决第一个Project Euler问题,http://projecteuler.net/problem=1,但是我需要在循环中使用if语句来检查n模3或5是否为0。 sum突然停止工作了。
我的代码:
echo off
set sum=0
for /l %%n in (1,1,999) do (
set a/ sum+=%%n *(only add if n%%3 == 0 or n%%5 == 0)*
)
echo %sum%
pause
这是一个非常有效的解决方案,尽管有点令人困惑:
@echo off
setlocal
set /a sum=0
for /l %%N in (1 1 999) do set /a "sum+=%%N/!((%%N%%5)*(%%N%%3))" 2>nul
echo %sum%
(%%N%%5)*(%%N%%3)
如果该表达式%%N
可被3或5整除,则该表达式将产生零;如果不能被任何一个整除,该表达式将产生非零。所述!
取反逻辑值,所以0变为1,并且非零变为0划分%%N
由该表达产率要么%%N
或零错误的分割。因此,只需将整个表达式添加到总和中,然后将错误消息重定向到nul。
最终结果-仅添加可被3或5整除的数字:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句