程序找到可被3整除的数字和1-1之间的2

时间:2016-11-29 13:44:05

标签: mysql loops stored-procedures

我有作业,让程序确定可以被3和2整除的数字,但我可以尝试被3和2整除,就像这样

-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `divisible`()
BEGIN
  declare str VARCHAR(255) default '';
  declare x INT ;



  SET x = 1;
  set str = '';

while x <= 100 do

    if (x mod 3=0 &&  x mod 2 =0)  then 
        set str= CONCAT(str, x ,',')  ;  

    end if;
    set x=x+1;

end while;

SELECT str ;
END

上述程序的输出:'6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,'

如何制作不同的输出,可以被3:3,6,9,12 ...和2:2,4,6,8整除,在1-100之间。

2 个答案:

答案 0 :(得分:1)

首先,您可以通过简单地认识到所有六的倍数来获得可被2和3整除的数字列表:

set m = 6;
set x = m;
set str = '';
while x <= 100 do
    set str = CONCAT(str, x ,',');
    set x = x + m;
end while;

当然,您可以使用相同的方法获取任何倍数的列表,只需将乘数m更改为其他值即可。

如果您希望可以被两个三个整数的数字(而不是两个三个),您只需要更改原始代码即可使用{{1而不是or

and

答案 1 :(得分:0)

SET x = 1;
set str2 = '2: ';
set str3 = '3: ';
set str23 = '2|3: ';

while x <= 100 do

    if (x mod 2 = 0)  then 
        set str2 = CONCAT(str, x ,',')  ;      
    end if;

    if (x mod 3 = 0)  then 
        set str3 = CONCAT(str, x ,',')  ;      
    end if;

    if (x mod 2 = 0 &&  x mod 3 = 0)  then 
        set str23= CONCAT(str, x ,',')  ;      
    end if;
    set x=x+1;

end while;

SELECT str2
UNION
SELECT str3
UNION
SELECT str23
;
END