SQL로 소수 구하기
범위 1 ~ 1000 : 데이터셋이 주어지지 않았기 때문에 간단하게 만들어준다.
WITH RECURSIVE prime
AS (
SELECT 2 as p
UNION ALL
SELECT p + 1
FROM prime
WHERE p < 1000
)
만든 데이터셋을 바탕으로 소수를 구한다.
소수는 1과 자기 자신 이외에는 약수가 없는 수이므로 이를 활용한다.
SELECT p
FROM prime p1
WHERE NOT EXISTS (
SELECT 1
FROM prime p2
WHERE p2.p < p1.p
AND p1.p % p2.p = 0
)
정답의 형식이 2&3&5&7과 같은 형식의 한 줄 짜리 문자열이므로 GROUP_CONCAT으로 이어준다.
answer
WITH RECUSRIVE prime
AS (
SELECT 2 as p
UNION ALL
SELECT p + 1
FROM prime
WHERE p < 1000
)
SELECT GROUP_CONCAT(p SEPARATOR '&')
FROM prime p1
WHERE NOT EXISTS (
SELECT 1
FROM prime p2
WHERE p2.p < p1.p
AND p1.p % p2.p = 0
)