根据质数的定义,对于一个自然数 N,大家可以检查它是否能够被任何从 2 到 N 的平方根加 1 的自然数整除。如果可以被整除,就不是质数;否则是质数。因此,可以使用以下查询返回 100 以内的所有质数:
WITH RECURSIVE t(n) AS (
SELECT 2
UNION ALL
SELECT n+1 FROM t WHERE n<100
)
SELECT t1.n
FROM t t1
WHERE t1.n = 2
OR NOT EXISTS (
SELECT 1
FROM t t2
WHERE t2.n BETWEEN 2 AND sqrt(t1.n)+1
AND t1.n%t2.n = 0
);