mysql - 在mysql中生成数素数
问题描述
有没有什么方法可以在普通 sql 中生成素数的字符串列表,而无需使用函数或过程,而只需使用 sql 语句?
我有一个功能解决方案:素数列表
例如,要生成直到数字 10 的素数,结果将类似于:
lst_prime_numbers
2-3-5-7
我的 MySQL 版本是 5.7
解决方案
...在纯 sql 中生成素数的字符串列表,而不使用函数或过程,只使用 sql 语句...
...生成素数直到数字 10 ...
我的 MySQL 版本是 5.7
SELECT GROUP_CONCAT(num ORDER BY num SEPARATOR '-') primes
FROM ( SELECT t1.num
FROM ( SELECT 2 num UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 ) t1
JOIN ( SELECT 2 num UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 ) t2
-- WHERE t1.num <= 10
GROUP BY t1.num
HAVING 1 = SUM((t1.num MOD t2.num) = 0)
) subquery
您需要生成(或在某处找到 - 在这种情况下取消注释并调整 WHERE)数字列表从 2 到上限或更多。如果存在,您可以使用带有此类数据的某些服务表,或者使用带有此类数据的某些系统表(例如,mysql.help_keyword
包含约 700 个自然数)。
请记住 - 这是笛卡尔坐标,在较大的上限上将非常昂贵(因此很长)。