跳转至

二次剩余

引入

二次剩余可以认为是在讨论求模意义下 开平方 运算的可行性。对于更高次方的开方可参见 k 次剩余

定义

二次剩余

令整数 满足 ,若存在整数 使得

则称 为模 的二次剩余,否则称 为模 的二次非剩余。后文可能在模 显然的情况下简写成二次(非)剩余。

Euler 判别法

当模数为奇素数时,我们有如下定理:

Euler 判别法

对奇素数 和满足 的整数 ,有

即对上述的

  1. 的二次剩余当且仅当 .
  2. 的二次非剩余当且仅当 .
证明

首先由 Fermat 小定理,故

从而对任意满足 均有

另外由 是奇素数,我们有:

其中 是某个整系数多项式,进而:

同余方程的定理 5 可知, 是模 的二次剩余当且仅当 . 进而 是模 的非二次剩余当且仅当 .

基于 Euler 判别法,我们可以得到如下推论:

二次剩余的数量

对于奇素数 ,模 意义下二次剩余和二次非剩余均有 个。

证明

根据 Euler 判别法,考虑

注意到 ,由 同余方程的定理 6 可知 个解。所以模 意义下二次剩余和二次非剩余均有 个。

Legendre 符号

为了方便接下来的讨论,我们引入如下记号:

Legendre 符号

奇素数 和整数 ,定义 Legendre 符号如下:

即对于

  • 是模 的二次剩余当且仅当
  • 是模 的二次非剩余当且仅当

下表为部分 Legendre 符号的值(From Wikipedia

性质

  1. 对任意整数

    进一步,我们有推论:

  2. 完全积性)对任意整数

    我们有推论:对整数

证明
  1. Legendre 符号的定义Euler 判别法 易得。
  2. 注意到

    ,故:

  3. 由 1 得

    ,故

  4. 参见 二次互反律

基于如上性质,若对任意奇素数 的值均可计算,则我们就可以对任意合法情况计算 Legendre 符号的值。接下来我们有一个优美的定理,这个定理巧妙地在 之间建立起了联系,使得我们能用类似 辗转相除法 的思路完成计算。

二次互反律

二次互反律

是两个不同的奇素数,则

证明方式很多5。一种证明方式是基于如下引理:

Gauss 引理

是奇素数,,对整数 ,令 的最小非负剩余,设 ,则

证明

,显然 ,则

我们知道对 中任意元素 ,有 ,所以 ,进一步,对 中任意元素 ,我们有 ,否则若 中分别存在元素 使得 ,则存在整数 使得 ,由于 ,则 ,注意到 ,所以产生矛盾。因此

从而由 Legendre 符号的 性质 1 即得证。

容易得到如下推论:

推论

对奇素数 ,有

对奇素数 ,奇数 满足 ,有

证明

对 Gauss 引理中的 ,有 ,进而

因此

,则 ,从而有

,则有

根据如上推论,证明二次互反律只需验证

考虑由点 构成的集合 ,将其根据 的大小关系分成两部分(显然 ),分别验证三个集合的大小即可。

二次互反律不仅能用于判断数 是否是模 的二次剩余,还能用于确定使数 为二次剩余的模数的结构。

Example
  • 使得 为二次剩余的奇素数 满足
  • 使得 为二次剩余的奇素数 满足
  • 使得 同时为二次剩余的奇素数 满足

另外,我们还可以证明诸如「形如 的素数有无限多个」之类的结论,这一类结论实际上是 Dirichlet 定理 的简单推论。

Jacobi 符号

根据二次互反律,我们可以很自然地想到一种推广 Legendre 符号的方法:

Jacobi 符号

正奇数 和整数 ,其中 是素数, 是正整数,定义 Jacobi 符号如下:

其中等式右端的 Legendre 符号。另外对整数

Warning

我们一般不区分 Legendre 符号和 Jacobi 符号,因为由完全积性可知 Jacobi 符号具有和 Legendre 符号一样的性质,所以这两种符号的计算方法是一致的。但是有一点需要注意:当 不是奇素数 时, 的值与 是否是模 的二次剩余 无关,但是若 ,则说明 至少存在一个(实际上是奇数个)素因子 使得 是模 的二次非剩余,从而此时 是模 的二次非剩余。

我们还可以把模数进一步推广为 整数(只需补充 的定义),这样就得到了 Kronecker 符号

相关算法

特殊情况时的算法

对于同余方程 ,其中 为奇素数且 为二次剩余在 时有更简单的解法,考虑

那么 为一个解。

Atkin 算法

仍然考虑上述同余方程,此时 ,那么令 那么此时 为一个解。

证明

那么

Cipolla 算法

Cipolla 算法用于求解同余方程 ,其中 为奇素数且 为二次剩余。

算法可描述为找到 满足 为二次非剩余, 为一个解。

在复数域 中,考虑令 和实系数多项式的集合 取模后的集合记作 ,那么集合中的元素都可以表示为 的形式,其中 ,又因为 ,考虑多项式的运算可以发现 中元素的运算与 中一致。

后文考虑对于系数属于有限域 的多项式 和对 取模后的集合 中的运算。

选择

那么 为二次剩余,此时解显然为 。所以假设 。使得 为非零二次剩余的选择有 个,而使得 的选择恰有两个,那么有 种选择可以使得 为二次非剩余,使用随机方法平均约两次可得 .

证明

那么有 .

又因为二项式定理

可以发现只有当 时由于没有因子 不会因为模 被消去,其他的项都因为有 因子被消去了。所以

所以

所以 的系数必须为零即 此时考虑 Legendre 符号为完全积性函数可知 显然为二次剩余,不符合定义。因此 .

Bostan–Mori 算法

该算法基于 Cipolla 算法,我们将问题转换为 常系数齐次线性递推 再应用 Bostan–Mori 算法。考虑另一种常见的 Cipolla 算法的描述为 为满足 的一个解3,其中 为不可约多项式。选取 同样使用随机。证明过程略。参考文献4中的算法我们可以发现问题可转化为求解形式幂级数的乘法逆元的某一项系数:

时显然有 ,该算法乘法次数相较于 Cipolla 算法更少,其他相关乘法次数较少的算法可见2

Legendre 算法

对于同余方程 ,其中 为奇素数且 为二次剩余。Legendre 算法可描述为找到 满足 为二次非剩余,令 ,那么 .

证明

考虑选择一个 满足 ,那么 为二次非剩余,所以

存在环态射

那么

所以 .

Tonelli–Shanks 算法

Tonelli–Shanks 算法是基于离散对数求解同余方程 的算法1,其中 为奇素数且 为模 的二次剩余。

其中 为奇数。仍然使用随机方法寻找 满足 为二次非剩余。令 ,那么存在整数 满足 。若 为二次剩余,那么 为偶数且 .

证明

所以 的阶为 ,又因为 的解,所以 的幂次,记 .

是二次剩余,那么

所以 为偶数,而

剩下的问题是如何计算 ,Tonelli 和 Shanks 提出一次确定 的一个比特。令 在二进制下表示为 其中 .

因为 是二次剩余,所以开始时 ,然后计算 然后 等等,由以下公式给出

正确性显然。

习题

参考资料与注释

  1. Quadratic residue - Wikipedia
  2. Euler's criterion - Wikipedia

  1. Daniel. J. Bernstein. Faster Square Roots in Annoying Finite Fields. 

  2. S. Müller, On the computation of square roots in finite fields, Design, Codes and Cryptography, Vol.31, pp. 301-312, 2004 

  3. A. Menezes, P. van Oorschot and S. Vanstone. Handbook of Applied Cryptography, 1996. 

  4. Alin Bostan, Ryuhei Mori.A Simple and Fast Algorithm for Computing the N-th Term of a Linearly Recurrent Sequence

  5. Proofs of quadratic reciprocity - Wikipedia