二次剩余

二次同余式

二次同余式是关于未知数的二次多项式的同余方程。即:
ax2+bx+c0mod m 是一个二次同余方程。
此外,称 x2amod m 为最简二次同余式,或称最简二次同余方程。
一般的,通过配方,可以把一个一般的二次同余方程转化为一个最简二次同余式
接下来只需要讨论最简二次同余式。

二次剩余

前置概念、定理即证明:#

  • 有正整数 n,奇质数 p,且 pn,若存在一个正整数 x,使得 x2nmod p,则称 np 的二次剩余。

  • 勒让德符号 (np),若 np 的二次剩余,则该值为 1,若不是则该值为 1,若 pn,则该值为 0

定理 1#

(np)np12modp

  • 证明:设 gp 的原根,易证当 k=1,2,p1 时,gk 两两不同,所以存在唯一的 k,满足 n=pk,有以下引理:存在一个 x,满足:

    x2nmod p2|k

    现在证明上面的引理:

    • 充分性:设 gl=x,则 g2lnmodp,那么有 k2lmodp1,而 p1 是偶数,所以 k 是偶数。
    • 必要性:令 x=gk2 即可。

    首先如果 p|n,则显然 RHS=0

    否则,我们先证明 gp121,我们有:

    gp11modpgp110modp(gp121)(gp12+1)0modp

    而因为 gp121modp,得证。

    np 的二次剩余,则:

    ap12(gk)p12modp(gp1)k21modp

    否则,我们有:

    ap12(gk)p12modp(gp12)k(1)k1modp

  • Q.E.D

同时,经过上面的推导,我们可以看出若方程最简二次同余式有解的充要条件是 np121(mod p),并且勒让德符号是完全积性的。

定理 2#

  • [1,p1] 中有 p12 个二次剩余。

  • 证明:
    x,y[1,p1],xy,x2y2,则 (xy)(x+y)0 由于有 0<|xy|<p,所以必定是 x+y0,即 x+y0x2=y2 这说明如果 np 的二次剩余,并且一个解是 x,则另一个解一定是 px。而 xy,x+y0x2y2,所以一共只有 p12 个二次剩余。

求解最简二次同余式

  • 算法:在 [0,p1] 中随机生成一个数 a,另 w=a2n,若 (wp)=1 ,那么 (a+w)p12x 的一个解。

  • 证明:显然有 [x1&xp](px)0modp,因此,(a+w)p=i=0p(pi)ai(w)piap+(w)p(注明:以上是二项式定理),根据费马小定理,有 ap11(modp) 所以有 apa(modp) 根据定理 1(w)p=w×wp12=w ,因此有 (a+w)p1=(a+w)×(a+w)p(a+w)(ap+(w)p)。而 (a+w)(ap+(w)p)(a+w)(aw)=a2w=n。故有 (a+w)p1n,所以 (a+w)p12 为原方程的一个解。可以证明答案不会出现 w

  • 这里严谨的证明需要证明代数系统是一个环,留坑待填。

二次互反律

p,q 是两个奇素数,我们有:

(qp)(pq)=(1)p12q12

  • 证明:

  • 这里引用 2019 年的最新证明,被称作历代以来最短的证明。

  • 这里引用 Jacobi 和,定义:

    Sn(t)=x1+x2+xn=t(x1x2xnp)

    也就是把 t 进行 n 元拆分,注意这里认为 x1,x2,xn 互不相同。而且这 n 项及其它们的加法都是 modp 意义下的。
    接下来我们研究一下上面这个数的性质。对于 a0modp,我们有:

    Sn(t)=x1+x2+xn=t(x1x2xnp)=x1a+x2a++xna=ta(x1ax2axnap)(ap)n=(ap)nSn(ta)

    n 是奇数的时候,我们代入 t=0,t=a 可以得到:

    Sn(0)=0Sn(a)=(ap)nSn(1)=(ap)Sn(1)(a0modp)

    注:这里第三行是因为 n 是一个奇数。

    n=2 时,代入上边的式子可以得到 S2(a)=Sn(1),这是因为 (1p)=1 恒成立,由于 121modp

    接下来我们从定理出发得到:

    S2(0)=i=1p1(i(i)p)=i=1p1(i2p)(1p)

    注:i=0 时的项为 (00p) 恒为 0

    注意到 i2 一定是 p 的二次剩余,所以我们有:(i2p)=1,所以我们又可以得到:

    S2(0)=(p1)(1p)

    又因为 1,2,p1 有一半是 p 的二次剩余,所以有:

    i=1p1(ip)=0

    于是:

    S2(1)=i=1p1(i(1i)p)=i=1,j=i1(i2j(1i)p)=i=1,j=i1p1(i2p)(j(1i)p)=j=1p1(j(1i)p)=j=1p1(j1p)=j=0p2(jp)=(1p)

    所以我们可以得到:

    Sn(a)=S2(1)=(1p)(a0modp)

    整个证明的关键在于写出 n 为奇数时的表达式,首先,对于 n 为奇数,我们有以下恒等式:

    Sn+2(1)=i=0p1Sn(i)S2(1i)

    证明这个式子只需要回归定义,对于所有的 x1,x2,,xn+2,我们按照前 n 项的和划分成若干集合,设前 n 项和为 t 的集合为 St,而 Sn(t)S2(1t) 相当于是枚举了 St 里面的每一个元素。

    注:不要忘记勒让德符号具有完全积性。

    所以我们有:

    Sn+2(1)=i=0p1Sn(i)S2(1i)=Sn(0)S2(1)+Sn(1)S2(0)+i=2p1Sn(i)S2(1i)=Sn(1)(p1)(1p)i=2p1(ip)Sn(1)(1p)=Sn(1)p(1p)

    于是我们可以从 n 递推 n12,可以得到:

    Sn(1)=pn12(1p)n12=pn12(1)n12p12

    n 等于奇素数 q,运用欧拉准则我们又可以得到:

    Sq(1)(pq)(1)q12p12modq

    接下来考虑 1q 元拆分右循环 1,2,q 位的结果,因为 q 是一个质数,所以循环节要么是 q 要么是 1。所以要么这些数都一样,要么这 q 个右循环结果互不相同。

    对于互不相同的情况,对 Sq(1) 的贡献应该是 q(x1x2xqp)0modq,所以我们可以得到:

    Sq(1)qx=1(xqp)(q1p)q(q1p)(qp)modq

    注:满足 qx=1xmod p 意义下只有一个。
    最后一步的推导好像不是很显然,实际上若 q1p 的二次剩余,设 x2q1modp,那么我们有 x2qmodp,而由于 p 是素数,对于 x0x1 一定存在。故两个勒让德符号是相等的。

    于是我们整理一下可以得到:

    Sq(1)(pq)(1)q12p12(qp)

    而两边只有符号的区别,所以同余号就无关紧要了,我们就可以得到:

    (pq)(qp)=(1)p12q12

参考资料

  1. 威尔逊定理证明

  2. 百度百科二次同余式

  3. 洛谷日报

  4. 知乎

posted @   NuclearReactor  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
主题色彩