You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写查询语句输出≤指定值的所有质数,以&分隔单行打印

质数查询SQL语句实现

以下是两种适用于不同MySQL版本的查询语句,可输出所有小于等于指定值的质数,结果以&分隔为单行:

方式一:依赖预创建的数字表(兼容低版本MySQL)

SET @n = 10; -- 替换为你需要的指定数值

SELECT GROUP_CONCAT(p SEPARATOR '&') AS primes
FROM (
    SELECT t1.num AS p
    FROM (
        SELECT 2 AS num UNION ALL
        SELECT num + 1 FROM numbers WHERE num <= @n - 1
    ) t1
    WHERE NOT EXISTS (
        SELECT 1 FROM numbers t2
        WHERE t2.num BETWEEN 2 AND SQRT(t1.num)
          AND t1.num % t2.num = 0
    )
    AND t1.num >= 2
) primes_list;
  • 需提前创建一个包含连续整数的numbers表(至少覆盖到你要查询的最大值)
  • 通过NOT EXISTS子句筛选出无除1和自身外因数的质数
  • 用GROUP_CONCAT将结果拼接为&分隔的单行

方式二:递归CTE生成序列(MySQL 8.0+适用)

SET @n = 10; -- 替换为目标数值

WITH RECURSIVE numbers AS (
    SELECT 2 AS num
    UNION ALL
    SELECT num + 1 FROM numbers WHERE num < @n
),
primes AS (
    SELECT num
    FROM numbers n
    WHERE NOT EXISTS (
        SELECT 1 FROM numbers m
        WHERE m.num <= SQRT(n.num)
          AND n.num % m.num = 0
    )
)
SELECT GROUP_CONCAT(num SEPARATOR '&') AS primes FROM primes;
  • 无需提前建表,用递归CTE自动生成从2到指定值的整数序列
  • 逻辑与方式一一致,更适合高版本MySQL环境

当指定值为10时,两种方式的输出均为:2&3&5&7

内容的提问来源于stack exchange,提问作者Darshil Sakdecha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:24:54