想象你正站在一座巨大的音乐厅里,等待一场神秘交响乐的首演。幕布上写着这样一行字:“这首曲子由两个基础主题交织而成,找到它们,你就能完整复现整首乐谱。”然而你手里没有乐谱,只能竖起耳朵,一个音符一个音符地辨认——这就是经典世界面对“大数分解”时的真实处境。RSA 加密之所以能守护我们的银行卡、聊天记录和数字签名,正是因为它把“分解两个大素数的乘积”这道难题,铸成了一把几乎无法撬开的锁。而 Shor 算法,则像是一位横空出世的“节拍大师”:它不再逐个音符地试听,而是先捕捉整首乐曲背后隐藏的鼓点节奏——只要找到这个节奏(数学家叫它“周期”),两个基础主题便会自动浮出水面。这位大师的秘诀在于量子计算机的“分身术”:让无数虚拟听众同时聆听所有可能的演奏版本,再用量子傅里叶变换做一次华丽的频谱分析,使真正的主节奏轰然凸显、杂音彼此抵消。本文将从这支交响乐的创作背景讲起,带你一步步听懂这位节拍大师的完整五线谱。

岗位关联

对 AI 从业者而言,理解 Shor 算法是看懂“量子威胁是否迫近”和“后量子密码为何必要”的关键,它将直接影响未来十年数据安全与隐私计算的架构选择。

目录
  1. 可视化演示
  2. 大数分解问题
  3. 数论基础
  4. 量子子程序
  5. 经典后处理
  6. 资源估算
  7. 实验进展
  8. 后量子密码
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示RSA加密原理与分解困难性、量子周期查找核心机制及Shor算法完整流程,揭示量子计算对经典密码的指数级加速。

本节配有交互动效(进入视口后自动加载,约 3KB)。

RSA加密与分解困难性 RSA基础:N=p×q,已知p,q求N容易,已知N求p,q困难 安全假设:经典算法需指数时间O(exp)分解大整数 N = p × q, factoring: O(exp(√(log N))) classically

大数分解问题

请再回到那座交响乐大厅。你要找的两个“基础主题”,在数学世界里就是组成大数 N 的两个素数因子 p 和 q。N 就是那扇上了锁的门——它看上去只有一个数字,却暗藏两个秘密。经典世界里最笨的办法,是把所有可能的素数逐个拿来试除,就像一位琴童从第一个音符开始试奏整本乐谱,直到撞见正确的那一段。这种方法在数字稍微变大后就彻底失效:即使运算速度快到每秒亿万次,面对 2048 位的 RSA 模数,穷举也需要远超宇宙年龄的时间。

聪明的经典数学家当然不会只靠蛮力。他们发展出二次筛法、数域筛法等“高级试奏技巧”,把复杂度从指数级降到亚指数级。听起来很棒,但“亚指数”依然意味着:每当密码位数增加一位,破解时间就会按超多项式速度膨胀。这也是 RSA 敢把公钥挂在全世界的道理——经典计算机最优秀的算法,也只能在“听上去可行的边界”上拼命挣扎。

RSA 加密的原理并不复杂:选择两个大素数 p 和 q,把它们乘起来得到 N,任何人拿到 N 都能加密,但想解密就必须知道 p 和 q。于是 N 的质因数分解难度,就成了整座银行的金库大门。Shor 算法在 1994 年横空出世,它第一次告诉世界:如果拥有一台足够大的容错量子计算机,分解大数可以在多项式时间内完成——就像那位节拍大师听了一遍前奏,就能指挥全部乐器奏出完整旋律。经典的“锁匠逻辑”在这里被彻底改写。

数论基础

为什么找到“节奏”就能打开锁?让我们观察一个看似平淡无奇的数列。选定一个与 N 互质的数 a,然后不断计算 a 的幂次除以 N 的余数:a⁰ mod N、a¹ mod N、a² mod N……你会发现,这些余数就像鼓手敲出的循环小节,走到某个长度后必然从头再来。这个循环长度就是数学家口中的“阶”,也就是我们寻找的周期 r。找到它,就像抓住了整首乐曲反复出现的过门。

这个周期性来自群论的一个朴素事实:在模 N 的乘法世界里,元素个数有限,幂次只能在有限个余数之间打转,迟早会回到起点。而 Shor 的天才之处,正是把“分解大数”这桩看似无从下手的苦差事,归约成一个更加清清爽爽的“周期查找”任务。周期一旦到手,分解几乎唾手可得。

下面这个函数是整支乐曲的主旋律:

找到周期 r 之后,欧几里得算法便登场了。它像一个精确的节拍切分器:给定两个数,用辗转相除不断“削”出它们的最大公约数。我们会用它对 a^(r/2)±1 与 N 求最大公约数,一举切出 p 和 q。整个数论基础,说到底就是一句话:大数分解听上去像高山,实则是一座藏在“余数循环”里的隧道,而周期就是隧道的入口。

f(x)=ax mod N\displaystyle f(x) = a^x \bmod N
它把指数 x 映射成“a 的 x 次幂除以 N 的余数”。这个序列周期性地重复自己,周期 r 正是 Shor 算法要偷听的核心情报。
  1. 选定底数随机选一个与 N 互质的整数 a,确保序列在模 N 的有限世界里不会退化。
    a∈{2,3,…,N−2},gcd⁡(a,N)=1\displaystyle a \in \{2, 3, \ldots, N-2\}, \quad \gcd(a, N) = 1
  2. 幂次递增让指数 x 从 0 开始,逐个增加,每次计算 a 的 x 次幂。
    x=0,1,2,3,…\displaystyle x = 0, 1, 2, 3, \ldots
  3. 取余运算把 a^x 除以 N 得到的余数作为函数值,让结果始终落在 0 到 N-1 的范围内。
    f(x)=ax−⌊axN⌋×N\displaystyle f(x) = a^x - \left\lfloor \frac{a^x}{N} \right\rfloor \times N
  4. 周期出现当 x 增加最小正整数 r 时函数值循环重复,r 称为 a 在模 N 下的阶。
    f(x+r)=f(x),r=ordN(a)\displaystyle f(x + r) = f(x), \qquad r = \mathrm{ord}_N(a)

量子子程序

经典计算机找到这个周期需要多久?和分解大数一样,慢得令人绝望。量子计算机却有一位“分身术大师”:它可以同时准备所有 x 对应的 f(x),把整个周期序列一次性地放进叠加态。想象几千名听众同时戴着耳机,分别聆听 x=0 的版本、x=1 的版本、x=2 的版本……所有版本在同一时刻响起,互不干扰。

这个魔法般的状态可以写成:

量子傅里叶变换(QFT)就是那位“频谱分析仪”。它像音乐会上的调音师把混合音频分解成频谱一样,把叠加态中隐藏的频率结构暴露出来。测量第一个寄存器时,我们以高概率得到某个频率值 m,它与 Q/r 直接相关——周期 r 的信息就这样被“听写”出来。整个过程一步到位,没有任何人需要逐个检查 x,这就是量子并行真正的威力所在。

1Q∑x=0Q−1∣x⟩ ∣ax mod N⟩\displaystyle \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle \, |a^x \bmod N\rangle
它表示:第一个寄存器均匀叠加了 0 到 Q-1 的所有指数,第二个寄存器在每一个分支上同时计算出对应的余数。不同 x 的“听众”彼此相干,周期信息就这样被编码进量子态里。
  1. 均匀叠加对第一个寄存器逐位施加 Hadamard 门,制造等幅叠加,仿佛让所有“听众”同时入场。
    1Q∑x=0Q−1∣x⟩\displaystyle \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle
  2. 条件模幂以 x 为控制寄存器,在辅助寄存器中计算 a^x mod N,实现“每个听众听到自己的版本”。
    ∣x⟩∣0⟩  →  ∣x⟩∣ax mod N⟩\displaystyle |x\rangle |0\rangle \;\rightarrow\; |x\rangle |a^x \bmod N\rangle
  3. 纠缠成形两个寄存器形成纠缠,周期信息被“印”在联合态里,等待后续处理。
    ∑x=0Q−1∣x⟩∣f(x)⟩\displaystyle \sum_{x=0}^{Q-1} |x\rangle |f(x)\rangle
  4. 量子傅里叶变换对第一寄存器施加 QFT,把周期信号转化为频率域中的尖峰。
    1Q∑y=0Q−1∑x=0Q−1e2πixy/Q∣y⟩∣f(x)⟩\displaystyle \frac{1}{Q} \sum_{y=0}^{Q-1} \sum_{x=0}^{Q-1} e^{2\pi i x y / Q} |y\rangle |f(x)\rangle

经典后处理

量子部分结束时,我们手里攥着一串频率读数,像录音师拿到了激动人心却略带模糊的现场采样。接下来,经典后处理团队开始工作。第一步是连分数展开:把测量到的频率 m 与总长度 Q 的比值 m/Q 展开成连分数,就能在“模糊的节拍”中还原出真实的周期 r——就像从几段记不清的鼓点里,推算出鼓手真正遵循的循环小节数。

周期 r 到手后,还不能直接欢呼:如果 r 是奇数,a^(r/2) 就不是整数,整个公式无法使用,只能重新跑一遍量子部分。只有 r 为偶数时,才能把 a^(r/2)±1 分别与 N 求最大公约数:

为什么这条公式成立?关键在于:若 r 是满足 a^r ≡ 1 (mod N) 的最小正偶数,那么 N 必须同时整除 a^(r/2)-1 和 a^(r/2)+1 的乘积,却不能完全整除其中任何一个。于是这两个最大公约数便各自“拽住”了一部分因子,N 被从中间劈成两半。这个过程完全在经典计算机上运行,成本极低;整支交响乐的关键工作量,早已被量子部分悄悄完成。

p=gcd⁡(a r/2−1, N),q=gcd⁡(a r/2+1, N)\displaystyle p = \gcd(a^{\,r/2} - 1,\, N), \qquad q = \gcd(a^{\,r/2} + 1,\, N)
这个公式像一个精密的“切音器”:当周期 r 已知且为偶数时,a^(r/2)±1 与 N 的最大公约数,恰好能把 N 切割成两个非平凡因子 p 和 q。
  1. 检查奇偶确认 r 为偶数,否则因子公式无从谈起,需要重新测量。
    r mod 2=0\displaystyle r \bmod 2 = 0
  2. 代入二项式将 a 的 r/2 次幂分别加减 1,并各自与 N 求最大公约数。
    p=gcd⁡(a r/2−1, N)\displaystyle p = \gcd(a^{\,r/2} - 1,\, N)
  3. 切出因子若 p 与 q 都不等于 1 或 N,便得到真正的分解。
    N=p×q\displaystyle N = p \times q
  4. 失败重试若得到平凡因子,换一个随机数 a,重新启动整条流水线。
    gcd⁡(a r/2±1,N)=1  or  N  ⇒  retry\displaystyle \gcd(a^{\,r/2} \pm 1, N) = 1 \;\text{or}\; N \;\Rightarrow\; \text{retry}

资源估算

节拍大师并非凭空指挥:要演奏整首乐曲,得有足够大的音乐厅、足够多的乐手和乐器。Shor 算法要真正分解一个 n 比特的大数,同样需要精打细算。首先,数据寄存器需要约 n 个量子比特来存放 a^x mod N;其次,量子算术需要额外的辅助比特处理进位运算;最后,为了保证计算可靠,还要为容错纠错预留大量冗余。

粗略的逻辑资源需求可以写成:

以 RSA-2048 为例,n≈2048,逻辑量子比特约 4099 个——听起来不算多。但现实中每个逻辑比特都要用表面码等量子纠错方案,用成千上万个物理比特去保护,总物理比特数可达百万甚至千万级别。再加上量子门错误率要压到极低、运行时间需要数小时乃至数天,这座“音乐厅”的造价和运维成本,远超今天任何一台量子原型机的能力范围。资源估算就像给未来量子计算机算一笔“演出预算”,提醒我们 Shor 算法是真实的威胁,却还远不是眼前的危机。

Llogical≈2n+3,Tgates=O(n3log⁡n)\displaystyle L_{\text{logical}} \approx 2n + 3, \qquad T_{\text{gates}} = O\bigl(n^3 \log n\bigr)
它告诉我们:分解 n 比特整数大约需要 2n+3 个逻辑量子比特,而量子门电路的总数随 n 的三次方乘以对数增长。逻辑比特是“理想化乐手”,物理比特才是真正坐在台上的演奏者。
  1. 数据寄存器整数 N 本身需要 n 个量子比特来承载运算对象。
    n=⌈log⁡2N⌉\displaystyle n = \lceil \log_2 N \rceil
  2. 辅助工作区量子加法、比较等算术运算需要 O(n) 个额外比特,防止进位“溢出”。
    Lextra=O(n)\displaystyle L_{\text{extra}} = O(n)
  3. 总逻辑比特综合数据与辅助比特,总逻辑比特数约 2n+3。
    Llogical≈2n+3\displaystyle L_{\text{logical}} \approx 2n + 3
  4. 门复杂度模幂电路所需的 Toffoli 门数量约为 n³ 量级,是电路深度的主导项。
    Tgates=O(n3log⁡n)\displaystyle T_{\text{gates}} = O\bigl(n^3 \log n\bigr)

实验进展

如果说上一节讨论的是“未来音乐厅的蓝图”,这一节则是“今天的彩排室”到底长什么样。2001 年,IBM 的研究团队用 7 个量子比特在核磁共振平台上分解了 15=3×5,那是人类第一次真正听到 Shor 算法的雏形——虽然只是儿歌级别的两句旋律,却证明了整个思路可落地。此后十多年,实验始终在“分解小整数”的围栏里打转:15、21、35,数字一点点变大,每一个都像一次稚嫩的乐器独奏。

2019 年前后,超导量子计算机的比特数突飞猛进。Google 的 Sycamore 处理器率先展示“量子霸权”后,研究者们又把它拿来做了一次 Shor 演示,依然分解 15——这看起来平淡无奇,却是一次重要的工程验证:中等规模含噪量子处理器已经能稳定跑完整个 Shor 流水线的一部分。与此同时,光子、离子阱、中性原子等平台也各自拿出分解小数的成果,像不同乐器都试奏了一遍主旋律。

真正值得关注的方向,是“中规模量子”时代的工程化。研究者不再执着于把 N 变大,而是转向给 Shor 的各个子电路加上容错保护:用逻辑量子比特实现模幂、把 QFT 编码进纠错码、用错误缓解技术压制噪声。2023 年以来,多个团队在数十到上百比特的处理器上用容错逻辑比特演示了关键子电路,相当于把整支乐团拆成小组,先把每个声部校准到无懈可击。可现实的兜头冷水依然存在:模幂电路的规模随 n 增长太快,任何试图分解 100 位以上数字的实验,都会被噪声和资源消耗拖垮。从“玩具木琴”到“完整交响乐团”,中间还隔着漫长的工艺与理论长征。

后量子密码

既然 Shor 算法已经把 RSA 的“乐谱规律”公之于众,作曲家的回应出人意料地果断:不再沿用 RSA 的谱式,而是改写一套让“找节拍”从根本上失效的新型乐谱。这些新密码体系统称后量子密码,它们的设计目标很朴素:即便攻击者拥有一台大型量子计算机,也无法在可行时间内破解。NIST(美国国家标准与技术研究院)自 2016 年起发起全球遴选,2024 年正式发布了第一批后量子密码标准。

其中风头最劲的是格基密码。它把安全性建立在“高维格上最短向量问题”之上——想象你把无数个点撒在网格上,要找到离原点最近的那一颗。这个迷宫的难度在经典和量子世界都极为棘手,至今没有任何量子算法能像 Shor 打 RSA 一样对它造成致命打击。NIST 选定的 Kyber(密钥封装)和 Dilithium(数字签名)都源自格问题,它们已经在浏览器、VPN 等场景中开始试验性部署。

另一条路线是哈希签名(如 SPHINCS+):安全性只依赖哈希函数的抗碰撞性,而哈希函数的“不可逆性”远没被量子计算机撼动过,堪称最保守可靠的备选方案。对企业和 AI 系统而言,真正的挑战不是选择算法,而是“迁移策略”:把每一张 TLS 证书、每一组代码签名密钥、每一条 VPN 隧道里的 RSA 都翻新成后量子方案。这就像整座音乐厅更换全部乐谱——不能停演、不能出错,只能力求平稳过渡。Shor 算法虽然未必在十年内威胁现实世界,但“先收后解”的攻击者早已在暗中录制今天的加密流量。节拍大师的出现,让每一个掌握秘密的人都必须重新思考:我的乐谱,是否也该换一种写法了?

AI 应用场景

金融与政务系统的后量子密码迁移评估

阶段:安全风险评估与密码体系升级

解决的问题:传统方案依赖 RSA/ECC,面对“先收后解”的量子威胁缺乏感知;人工梳理密码资产耗时耗力。AI 辅助工具可扫描全网证书、密钥与协议,自动识别仍在使用 RSA-2048 的端点,并结合业务系统依赖关系生成迁移优先级。

具体案例:某大型银行用自动化扫描平台盘点数千台服务器的 TLS 证书,标记出 300 余张使用 RSA 的证书,随后在测试环境用 Kyber 与经典算法混合部署,在不中断交易的前提下完成分批替换。

量子硬件研发中的资源预算模拟

阶段:量子芯片设计与算法验证

解决的问题:实验团队在部署 Shor 算法前需要估算逻辑量子比特、物理比特数、门深度与运行时长,传统依赖人工推演和经验公式,误差大。通过 AI 优化编译器自动把 Shor 电路映射到特定硬件拓扑,并模拟不同错误率下的成败概率。

具体案例:某量子初创公司在 127 比特超导处理器上运行 Shor 子电路前,先用资源估计器预测需要 4000+ 逻辑比特和约 10⁹ 个 T 门,据此放弃了直接分解大数的方案,转而先做纠错子电路验证。

量子教育平台上的算法仿真教学

阶段:教育培训、课程内容生成

解决的问题:Shor 算法涉及数论、线性代数与量子物理,初学者难以建立直觉。AI 课程平台可自动生成可交互的量子电路仿真,把分解 15、21 的整个过程可视化,并根据学习者错误实时调整讲解深度。

具体案例:某在线教育平台内置基于 Qiskit 模拟器的 Shor 实验模块,学生点击“运行”即可看到周期测量柱状图,再配合 AI 生成的个性化习题,完成从原理到代码的闭环学习。

Python 演示

python57 行
import random  def gcd(a, b):    while b:        a, b = b, a % b    return a  def mod_pow(base, exp, mod):    result = 1    base = base % mod    while exp > 0:        if exp % 2 == 1:            result = (result * base) % mod        exp //= 2        base = (base * base) % mod    return result  def find_period(a, N, limit=10000):    """模拟量子周期查找: 返回最小的 r 使 a^r mod N == 1"""    r = 1    val = a % N    while val != 1 and r < limit:        val = (val * a) % N        r += 1    return r if val == 1 else None  def shor_classical_part(N, attempt=10):    """Shor 算法的经典后处理: 输入 N, 输出一个非平凡因子"""    if N % 2 == 0:        return 2    for _ in range(attempt):        a = random.randint(2, N - 2)        g = gcd(a, N)        if g > 1:            return g        r = find_period(a, N)        if r is None or r % 2 != 0:            continue        g1 = gcd(a ** (r // 2) - 1, N)        g2 = gcd(a ** (r // 2) + 1, N)        if 1 < g1 < N:            return g1        if 1 < g2 < N:            return g2    return None  if __name__ == "__main__":    N = 21    factor = shor_classical_part(N)    print("N =", N)    print("factor =", factor)    print("valid =", factor is not None and N % factor == 0)
目的:用 Python 模拟 Shor 算法的“周期查找 + 经典后处理”流程,分解小整数 N=21,输出一个非平凡因子并验证正确性。
  1. def gcd(a, b):用辗转相除实现欧几里得算法,是后处理提取因子的核心工具。
  2. while b:循环终止条件:余数归零时上一次的除数就是最大公约数。
  3. def mod_pow(base, exp, mod):快速模幂算法,用二进制展开指数避免超大整数运算。
  4. if exp % 2 == 1:当前二进制位为 1 时,把累积结果乘上对应的 base 的幂。
  5. def find_period(a, N, limit=10000):模拟量子周期查找,返回满足 a^r ≡ 1 (mod N) 的最小 r。
  6. while val != 1 and r < limit:从 a¹ 开始逐次乘 a 并取模,直到余数回到 1。
  7. def shor_classical_part(N, attempt=10):Shor 算法的经典后处理主流程,最多尝试 10 个随机底数。
  8. g = gcd(a, N)若 a 与 N 已有非平凡公约数,直接返回它。
  9. r = find_period(a, N)调用“假想的量子电路”拿到周期 r。
  10. if r is None or r % 2 != 0:周期无效或为奇数时跳过,重新选择底数。
  11. g1 = gcd(a ** (r // 2) - 1, N)用公式 p = gcd(a^(r/2)-1, N) 提取因子。
  12. if __name__ == "__main__":确保脚本被直接运行时才执行演示,避免被导入时误触发。

常见误区

误区我听说量子计算机几秒钟就能破解 RSA,那 Shor 算法一定是“瞬间”完成的,比泡杯咖啡还快。

正解Shor 算法只是把复杂度从指数级降到了多项式级,它仍然需要冗长的电路执行时间和海量资源。分解一个 2048 位的 RSA 模数,在拥有一百万物理量子比特的理想假设下也需要数小时运行,而这台机器本身可能还要建造十年。它像一位效率极高的节拍大师,但大师依然要按乐谱一页页指挥,并不能凭空让时间归零。

为何常见:媒体在报道“量子霸权”时常用“秒杀 RSA”之类标题,把算法层面的多项式加速渲染成了“一键破解”,忽略了硬件规模和运行延迟。

误区已经看到新闻说 Google、IBM 的量子计算机破解了加密,那我的银行账户是不是已经不安全了?

正解目前所有 Shor 算法实验都只分解了 15、21、35 等 2-4 位小整数,距离 RSA-2048(617 位十进制数)还差几十个数量级。这些演示更像在玩具木琴上敲出《小星星》,而不是在音乐厅演奏完整交响乐。实验界的共识是:实用化量子分解仍需十年以上的硬件突破。

为何常见:公众容易把“演示分解 15”等同于“破解 RSA”,因为新闻标题往往省略了资源估算这一关键背景。

误区量子计算机无非是处理器更快,能把所有候选因子一次性试完,量子比特多就可以暴力破解。

正解Shor 算法的精髓不是暴力搜索,而是把分解问题归约为周期查找,再用量子傅里叶变换高效读出周期。即便量子计算机拥有无限快的基础运算,如果没有“周期查找”这条数学捷径,面对大数分解依然只能望洋兴叹。它的路线是“换赛道”,而不是“加油门”。

为何常见:很多人对量子计算的印象停留在“并行穷举”的直觉上,没有意识到算法层面的数学重构才是 Shor 突破的本质。

误区只要造出一台几千量子比特的机器,就可以立刻拿来破解 RSA。

正解几千个裸量子比特远远不够。真实量子比特噪声大、相干时间短,必须用量子纠错编码保护;每个逻辑量子比特可能需要上千个物理比特来冗余编码。此外还要有能执行模幂电路的编译映射、足够低的逻辑门错误率,以及整套低温控制设备。资源估算提醒我们:比特数量只是入场券,质量与连接才是音乐会能否奏响的关键。

为何常见:厂商发布会总以“量子比特数”作为卖点,让大众误以为数量等同于算力,忽略了纠错开销和工程约束。

误区既然 NIST 推出了后量子标准,换上新算法就绝对安全,量子计算机再也无计可施。

正解后量子密码只是“目前已知攻击下安全”的候选方案,其安全性同样依赖新的计算困难假设(如格问题),并非数学上的绝对不可破。历史上出现过候选密码被随后的攻击快速击穿的情况。真正的安全保障来自多层纵深、混合加密与持续审计,而不是某一套算法的一劳永逸。

为何常见:把“抗量子”误解为“不可破解”,混淆了“基于可证困难的假设”与“绝对安全性”这两个完全不同的概念。

面试题

Q1. Shor 算法要解决的核心子问题是什么?

单选题 · easy

  • A.大素数快速生成
  • B.隐藏周期查找← 正确答案
  • C.随机数安全采样
  • D.数据流高效压缩

答案:B。Shor 的关键贡献是把大数分解归约为周期查找:找到 a^x mod N 的周期 r,就能通过两条 gcd 公式推开因子之门。A 是密钥生成环节,C 只是算法的输入准备,D 与分解毫无关系。

Q2. 经典大数分解算法的复杂度属于哪个量级?

单选题 · easy

  • A.多项式级别
  • B.亚指数级别← 正确答案
  • C.常数时间级别
  • D.对数时间级别

答案:B。目前最好的经典算法(数域筛法)复杂度为亚指数级,意味着位数每增加一点,耗时都会超线性爆炸。Shor 算法则是多项式级别,这正是它能根本性威胁 RSA 的原因。

Q3. Shor 算法中随机选取的底数 a 必须满足什么条件?

单选题 · easy

  • A.与 N 互质← 正确答案
  • B.与 N 相同
  • C.必须是素数
  • D.必须是偶数

答案:A。a 必须与 N 互质,才能保证 a^x mod N 构成一个纯循环的周期序列而不中途退化。若 a 与 N 不互质,gcd(a,N) 本身就已泄露因子,无需再走量子流程。

Q4. 测得周期 r 后,提取非平凡因子的正确公式是?

单选题 · mid

  • A.gcd(ar/2−1,N) 与 gcd(ar/2+1,N)← 正确答案
  • B.lcm(ar/2−1,N) 与 lcm(ar/2+1,N)
  • C.ar mod N 与 ar/2 mod N 的和
  • D.gcd(ar−1,N) 与 gcd(ar+1,N)

答案:A。r 为偶数时,a^(r/2)-1 与 a^(r/2)+1 的乘积能被 N 整除,但各自都只携带部分因子,分别求 gcd 即可切出 p 和 q。B 求最小公倍数方向错误,C 与 D 也无法保证切出非平凡因子。

Q5. 量子傅里叶变换在 Shor 算法中的作用是什么?

单选题 · mid

  • A.周期转为频率尖峰← 正确答案
  • B.压缩量子态存储量
  • C.消除测量随机噪声
  • D.加速经典数据排序

答案:A。QFT 把叠加态中的周期信号变换到频率域,使 true 周期对应的频率分量被相长干涉放大,其余分量趋于抵消。测量时便以高概率读到与 Q/r 相关的整数,从而复原出周期 r。

Q6. 以下哪些属于后量子密码的候选方向?

多选题 · mid

  • A.格基密码← 正确答案
  • B.哈希签名← 正确答案
  • C.RSA体制
  • D.多变量密码← 正确答案

答案:ABD。格基密码(Kyber、Dilithium)和哈希签名(SPHINCS+)是 NIST 标准化的主力方向,多变量密码也是重要候选。RSA 恰恰是 Shor 算法要击穿的目标,不属于抗量子方案。

Q7. 当前 Shor 算法实验规模很小的直接原因有哪些?

多选题 · mid

  • A.量子噪声太大← 正确答案
  • B.量子频率过低← 正确答案
  • C.纠错开销过高← 正确答案
  • D.经典模拟已足够

答案:ABC。真实硬件错误率高、时钟频率远低于经典 CPU,且每个逻辑比特需要海量物理比特纠错,三者共同限制了可分解的数字大小。经典模拟只是验证手段,并不能替代真实量子优势。

Q8. 经典后处理中连分数展开的目的是什么?

单选题 · hard

  • A.从频率估计逼近真实周期← 正确答案
  • B.计算大数的平方根
  • C.生成均匀随机数
  • D.验证大数的素数性

答案:A。测量得到的频率 m 与 Q 的比值 m/Q 经过连分数展开,能在不精确的测量值中逼近 r/Q 的最简分数,从而恢复周期 r。这一步是连接量子频谱峰与数论因子的桥梁。

Q9. 运行实用规模 Shor 算法需要哪些量子资源?

多选题 · hard

  • A.低噪量子比特← 正确答案
  • B.长相干时间← 正确答案
  • C.容错纠错电路← 正确答案
  • D.经典超算存储

答案:ABC。低错误率、长相干时间和容错纠错电路是量子计算可靠执行模幂与 QFT 的前提。经典超算存储只是辅助手段,并非 Shor 算法的本质资源需求。

Q10. 量子傅里叶变换后测量第一寄存器,得到的是什么?

单选题 · extreme

  • A.接近 Q/r 的频率值← 正确答案
  • B.精确的周期 r 本身
  • C.大数 N 的素因子
  • D.初始随机数 a 的值

答案:A。QFT 把周期编码为相位,测量结果以高概率落在与 Q/r 最接近的整数频率附近,而不是直接给出周期 r。真正恢复 r 还需要连分数展开做经典后处理。B 和 C 都混淆了中间结果与最终输出。