I have been trying to write a logic to print all prime numbers.
And it works as expected till range of 1 to 100.
But when I increase the range it dose not work from 1 to 500
Can some explain in details what is wrong in my below code and how it can be improved.
Any easy or different way to print prime numbers will be much appreciated
Code :
SELECT
result
FROM
(
SELECT
CASE
WHEN ROWNUM = 2 THEN
ROWNUM
WHEN ROWNUM = 3 THEN
ROWNUM
WHEN ROWNUM = 5 THEN
ROWNUM
END AS result
FROM
dual
CONNECT BY
ROWNUM <= 5
)
WHERE
result IS NOT NULL
UNION ALL
SELECT
result
FROM
(
SELECT
decr1 AS result
FROM
(
SELECT
rn AS decr1
FROM
(
SELECT
ROWNUM AS rn
FROM
dual
CONNECT BY
ROWNUM < 1000
)
)
WHERE
decr1 > 5
MINUS
SELECT
decr AS result
FROM
(
SELECT
t.rn AS decr
FROM
(
SELECT
ROWNUM AS rn
FROM
dual
CONNECT BY
ROWNUM < 1000
) t
WHERE
rn >= 6
)
WHERE
mod(decr, 2) = 0
OR mod(decr, 3) = 0
OR mod(decr, 4) = 0
OR mod(decr, 5) = 0
OR mod(decr, 6) = 0
OR mod(decr, 7) = 0
OR mod(decr, 8) = 0
OR mod(decr, 9) = 0
OR mod(decr, 10) = 0
);
My output for range of 1 to 100
