[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 【已解决】批处理如何实现数字满足多个条件时输出?

本帖最后由 kamui_xp 于 2013-7-11 15:59 编辑

设有一个数组a为100内的质数;
找出1-100中同时满足i+4可以被5整除、i+2在数组a中、i-4在数组a中的数并输出。

我只知道用FOR /L %%i IN (1,1,100)可以实现循环,但不知道怎么实现同时满足多个条件以及在数组中查找的问题,求高手指点。
以上条件是我随便设置的,方便高手指导时有个直观的映像。
多谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# Python


    例子浅显易懂,受教了,多谢。

TOP

本帖最后由 kamui_xp 于 2013-7-3 17:38 编辑

回复 4# terse


    太感谢了,问题解决了。
您的代码确实言简意赅。

TOP

本帖最后由 kamui_xp 于 2013-7-3 17:23 编辑

回复 3# cutebe


    太感谢了,问题解决了。

TOP

回复 6# terse


    确实是这个意思

TOP

回复 6# terse
那就是我理解错了。

我以为 i 也在数组 a 中。
IF !_%%N!_!@A4!_!_%%F!_!_%%G!==#_0_#_# ECHO,%%N
改成:IF !@A4!_!_%%F!_!_%%G!==0_#_# ECHO,%%N
::这里把数 i 判断去掉了
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 5# cutebe
i+2在数组a中、i-4在数组a中的数并输出
这里 21 应该分别 +2 和 -4 吧 楼主不是这个意思吗

TOP

21 和 51 都能被 3 整除,不是素数
如无特别说明,代码测试环境均为 XP SP3

TOP

本帖最后由 terse 于 2013-7-3 14:13 编辑

结果和是上面不一样啊
  1. @echo off&setlocal enabledelayedexpansion
  2. set "a=2"
  3. for /l %%i in (3 2 100) do (
  4.     set F=0
  5.        for %%j in (!a!) do (
  6.            set/a "N=%%i %% %%j"
  7.               if !N! equ 0 set F=1
  8.        )
  9.            if !F! equ 0  set a=!a! %%i&set $%%i=1
  10. )
  11. echo !a!
  12. for /l %%i in (2 1 100) do (
  13.     set /a "i=%%i+2,j=%%i-4"
  14.     set /a "n=(%%i+4)%%5,i=$!i!+$!j!"
  15.     if !n! equ 0 if !i! equ 2 echo %%i
  16. )
  17. pause
复制代码
1

评分人数

TOP

  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. ::生成素数相关变量,适用于数量较少的情况;数量多时可以生成临时文件
  4. SET _2=#
  5. FOR /L %%N IN (3,2,100)DO (
  6.  SET/aMAX=%%N-2
  7.  SET MFLAG=
  8.  FOR /L %%S IN (3,2,!MAX!)DO (
  9.   SET/aMOD=%%N%%%%S
  10.   IF !MOD!==0 SET MFLAG=1
  11.  )
  12.  IF NOT DEFINED MFLAG SET _%%N=#
  13. )
  14. ::显示所有素数
  15. FOR /L %%N IN (2,1,100)DO IF DEFINED _%%N ECHO,%%N
  16. ECHO,
  17. ECHO,输出满足条件的素数:
  18. ::判断
  19. FOR /L %%N IN (2,1,100)DO (
  20.  SET/a@4=%%N+4,@A4=@4%%5,@A2=%%N+2,@B4=%%N-4
  21.  FOR /F "TOKENS=1,2" %%F IN ("!@A2! !@B4!")DO (
  22.   IF !_%%N!_!@A4!_!_%%F!_!_%%G!==#_0_#_# ECHO,%%N
  23.  )
  24. )
  25. PAUSE
复制代码
1

评分人数

如无特别说明,代码测试环境均为 XP SP3

TOP

我先给个多条件的例子
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,100) do (
  4.     set /a m=%%i%%2
  5.     set /a n=%%i%%5
  6.     if !m! equ 0 (
  7.         if !n! equ 0 (
  8.             echo %%i
  9.         )
  10.     )
  11. )
  12. pause
复制代码
1

评分人数

TOP

返回列表