标题: [数值计算] 【已解决】批处理如何实现数字满足多个条件时输出? [打印本页]
作者: 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
我先给个多条件的例子- @echo off
- setlocal enabledelayedexpansion
- for /l %%i in (1,1,100) do (
- set /a m=%%i%%2
- set /a n=%%i%%5
- if !m! equ 0 (
- if !n! equ 0 (
- echo %%i
- )
- )
- )
- pause
复制代码
作者: cutebe 时间: 2013-7-3 13:12
- @ECHO OFF
- SETLOCAL ENABLEDELAYEDEXPANSION
-
- ::生成素数相关变量,适用于数量较少的情况;数量多时可以生成临时文件
- SET _2=#
- FOR /L %%N IN (3,2,100)DO (
- SET/aMAX=%%N-2
- SET MFLAG=
- FOR /L %%S IN (3,2,!MAX!)DO (
- SET/aMOD=%%N%%%%S
- IF !MOD!==0 SET MFLAG=1
- )
- IF NOT DEFINED MFLAG SET _%%N=#
- )
-
- ::显示所有素数
- FOR /L %%N IN (2,1,100)DO IF DEFINED _%%N ECHO,%%N
-
- ECHO,
- ECHO,输出满足条件的素数:
- ::判断
- FOR /L %%N IN (2,1,100)DO (
- SET/a@4=%%N+4,@A4=@4%%5,@A2=%%N+2,@B4=%%N-4
- FOR /F "TOKENS=1,2" %%F IN ("!@A2! !@B4!")DO (
- IF !_%%N!_!@A4!_!_%%F!_!_%%G!==#_0_#_# ECHO,%%N
- )
- )
- PAUSE
复制代码
作者: terse 时间: 2013-7-3 14:10
本帖最后由 terse 于 2013-7-3 14:13 编辑
结果和是上面不一样啊- @echo off&setlocal enabledelayedexpansion
- set "a=2"
- for /l %%i in (3 2 100) do (
- set F=0
- for %%j in (!a!) do (
- set/a "N=%%i %% %%j"
- if !N! equ 0 set F=1
- )
- if !F! equ 0 set a=!a! %%i&set $%%i=1
- )
- echo !a!
- for /l %%i in (2 1 100) do (
- set /a "i=%%i+2,j=%%i-4"
- set /a "n=(%%i+4)%%5,i=$!i!+$!j!"
- if !n! equ 0 if !i! equ 2 echo %%i
- )
- 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://bathome.net./) |
Powered by Discuz! 7.2 |