Shor算法 #### Shor算法,又叫质因数分解算法,在破解RSA加密方面有着重要意义。 问题背景 **** 已知一个大整数 :math:`N=pq`,其中 :math:`p,q` 均为未知的质数,求解 :math:`p,q`。 Shor算法分为经典算法实现的公约数求解、将质因数分解转化为函数周期求解等部分,以及借助量子傅里叶变换等量子算法实现的函数周期求解共三个部分。 相对经典算法,Shor算法在计算资源耗费和计算时间复杂度两方面均有极大的降低,使经典算法无法求解的超大型质因子分解问题出现了量子算法求解的可能。 .. note:: Shor算法试图解决的极大比特数RSA问题使用经典算法在理论上所需的计算时间和空间资源是近乎无法满足的,它不再只体现了量子计算的相对优势,\ 而是揭示了特定问题上量子计算的不可取代性和绝对优势。 算法原理 **** Shor分解算法的具体步骤如下: #. :math:`\forall 1`_ \ ,\ 此处仅介绍QPanda-2.0中提供的Shor算法调用接口。 .. code-block:: c std::pair> Shor_factorization(int target); 输入参数为被质因数分解的大数,返还计算过程是否成功和分解后的质因子对。 选取 :math:`N=9` , 验证Shor的代码实例如下 .. code-block:: c #include "QPanda.h" USING_QPANDA int main(void) { int N = 9; auto p = Shor_factorization(N); cout << p.first << "," << p.second.first << "," << p.second.second << endl; return 0; } 对 :math:`9` 的质因子分解结果应该是 :math:`9=3*3` ,所以应当返还算法成功标志和两个质因子 :math:`3` 和 :math:`3` 。 .. code-block:: c 1, 3, 3