我有作业,让程序确定可以被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之间。
答案 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