Write a query to print all prime numbers less than or equal to 1000. Print your result on a single line, and use the ampersand "&" character as your separator (instead of a space).
For example, the output for all prime numbers<=10 would be: 2&3&5&7
判断素数:从2到n-1判断有没有能整除n的数。如果有,则不是素数,否则,是素数。可以判断从2到sqrt(n)是否能整除n,可以降低时间复杂度。
SELECT
GROUP_CONCAT(NUMB SEPARATOR '&')
FROM
(
SELECT
@num :=@num + 1 AS NUMB
FROM
information_schema. TABLES t1,
information_schema. TABLES t2,
(SELECT @num := 1) tmp
) tempNum
WHERE
NUMB <= 1000
AND NOT EXISTS (
SELECT
*
FROM
(
SELECT
@nu :=@nu + 1 AS NUMA
FROM
information_schema. TABLES t1,
information_schema. TABLES t2,
(SELECT @nu := 1) tmp1
LIMIT 1000
) tatata
WHERE
FLOOR(NUMB / NUMA) = (NUMB / NUMA)
AND NUMA *NUMA <= NUMB
AND NUMA > 1