• + 0 comments
    WITH RECURSIVE candidates AS (
        SELECT 4 AS i
        UNION ALL
        SELECT i + 1 FROM candidates WHERE i < 1000
    ),
    divisors AS (
        SELECT 2 AS d
        UNION ALL
        SELECT d + 1 FROM divisors WHERE d < FLOOR(SQRT(1000))
    ),
    find_prime AS (
        SELECT c.i, d.d, MOD(c.i, d.d) AS modulus,
            CASE
                WHEN c.i <= 1 THEN 1
                WHEN c.i <= 3 THEN 0
                WHEN MOD(c.i, d.d) = 0 THEN 1
                ELSE 0
            END AS is_not_prime
        FROM candidates c
        JOIN divisors d
        ON c.i > d.d
    ),
    primes_only AS (
        SELECT i
        FROM find_prime
        GROUP BY i
        HAVING SUM(is_not_prime) = 0
    )
    SELECT CONCAT('2&3&', GROUP_CONCAT(i ORDER BY i SEPARATOR '&')) AS primes
    FROM primes_only;