SQLで素数生成
素数生成が遅いのと、上限を定めないと行けないのがいまいち気に入りません。
もっと良い方法があればよいけれども・・・
WITH temp(p) AS ( SELECT 2 UNION ALL SELECT (CASE t.p WHEN 2 THEN 3 ELSE t.p + 2 END) FROM temp t WHERE (t.p + 2) <= 100000 ) SELECT p , ROW_NUMBER() OVER(ORDER BY p) --INTO #primes FROM temp m WHERE NOT EXISTS ( SELECT 1 FROM temp s WHERE s.p < m.p AND m.p % s.p = 0) OPTION (MAXRECURSION 0)