Board logo

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

作者: kamui_xp    时间: 2013-7-3 11:23     标题: 【已解决】批处理如何实现数字满足多个条件时输出?

本帖最后由 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)可以实现循环,但不知道怎么实现同时满足多个条件以及在数组中查找的问题,求高手指点。
以上条件是我随便设置的,方便高手指导时有个直观的映像。
多谢!
作者: Python    时间: 2013-7-3 12:39

我先给个多条件的例子
  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
复制代码

作者: cutebe    时间: 2013-7-3 13:12

  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
复制代码

作者: terse    时间: 2013-7-3 14:10

本帖最后由 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
复制代码

作者: cutebe    时间: 2013-7-3 15:17

21 和 51 都能被 3 整除,不是素数
作者: terse    时间: 2013-7-3 15:39

回复 5# cutebe
i+2在数组a中、i-4在数组a中的数并输出
这里 21 应该分别 +2 和 -4 吧 楼主不是这个意思吗
作者: cutebe    时间: 2013-7-3 16:28

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

我以为 i 也在数组 a 中。
IF !_%%N!_!@A4!_!_%%F!_!_%%G!==#_0_#_# ECHO,%%N
改成:IF !@A4!_!_%%F!_!_%%G!==0_#_# ECHO,%%N
::这里把数 i 判断去掉了
作者: kamui_xp    时间: 2013-7-3 16:54

回复 6# terse


    确实是这个意思
作者: kamui_xp    时间: 2013-7-3 16:58

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

回复 3# cutebe


    太感谢了,问题解决了。
作者: kamui_xp    时间: 2013-7-3 16:59

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

回复 4# terse


    太感谢了,问题解决了。
您的代码确实言简意赅。
作者: kamui_xp    时间: 2013-7-3 17:15

回复 2# Python


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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2