首页 > 解决方案 > 在mysql中生成数素数

问题描述

有没有什么方法可以在普通 sql 中生成素数的字符串列表,而无需使用函数或过程,而只需使用 sql 语句?

我有一个功能解决方案:素数列表

例如,要生成直到数字 10 的素数,结果将类似于:

lst_prime_numbers
2-3-5-7

我的 MySQL 版本是 5.7

标签: mysqlsqlmysql-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 个自然数)。

请记住 - 这是笛卡尔坐标,在较大的上限上将非常昂贵(因此很长)。


推荐阅读