二次剩余

二次剩余

定义

令整数 \(a,p\) 满足 \((a,p)=1\),若存在整数 \(x\) 使得 \(x^2\equiv a\pmod p\)

则称 \(a\) 为模 \(p\) 的二次剩余,否则称 \(a\) 为模 \(p\) 的二次非剩余,这里只讨论 \(p\) 为奇质数的情况。

Legendre 符号

对奇素数 \(p\) 和整数 \(a\),定义 Legendre 符号如下:

\( \left(\frac{a}{p}\right)=\begin{cases} 0, & p\mid a,\\ 1, & (p\nmid a) \land ((\exists x\in\mathbf{Z}),~~a\equiv x^2\pmod p),\\ -1, & \text{otherwise}.\\ \end{cases}\)

性质

\(\left(\frac{n}{p}\right)\equiv n^{\frac{p-1}{2}}\pmod p\) \(\left(\frac{1}{p}\right)=1\)
\(\left(\frac{-1}{p}\right)=(-1)^{\frac{p-1}{2}}\) \(\left(\frac{2}{p}\right)=(-1)^{\frac{p^2-1}{8}}\)
\(\left(\frac{ab}{p}\right)=\left(\frac{a}{p}\right)\left(\frac{b}{p}\right)\) \(\left(\frac{ab^2}{p}\right)=\left(\frac{a}{p}\right)\)
\(a\equiv b\pmod p\Rightarrow \left(\frac{a}{p}\right)=\left(\frac{b}{p}\right)\)

Gauss 引理

\((n,p)=1\), 对整数 \(k\left(1\leq k\leq \dfrac{p-1}{2}\right)\)\(r_k=nk\mod p\)\(m=\sum_{i=1}^{\frac{p-1}{2}}[r_k>\frac{p-1}{2}]\)\(\left(\frac{n}{p}\right)=(-1)^m\)

证明
  1. \(t_k=nk\mod p(1\le k \le \frac{p-1}{2})\)
  2. 易证 \(t_k\) 互不相同,将其分为两组 \(A=\{t_k|t_k<\frac{p}{2}\},B=\{t_k|t_k>\frac{p}{2}\}\)
  3. \(C_i=p-B_i\),其中 \(m=size(C)\),尝试证明 \(B\)\(C\) 中元素互不相同
  4. 显然 \(A\)\(C\) 中的所有数恰好组成了 \(1\)\(\frac{p-1}{2}\) 中的所有数
  5. \(i\not= j\)\(t_i=\pm t_j\),则 \(ni\equiv \pm nj\),显然 \(i\not=p-j\),矛盾,所以元素互不相同
  6. \(n^{\frac{p-1}{2}}\prod_{i=1}^{\frac{p-1}{2}}i\equiv\prod_{i=1}^{\frac{p-1}{2}}t_i\equiv (-1)^{m}\prod A_i\prod C_i\equiv(-1)^m\prod_{i=1}^{\frac{p-1}{2}}i\),即 \(\left(\frac{n}{p}\right)\equiv n^{\frac{p-1}{2}}\equiv (-1)^m\)

二次互反律

\(p,q\) 是两个不同的奇素数 \(\left(\frac{p}{q}\right)\left(\frac{q}{p}\right)=(-1)^{\frac{p-1}{2}\frac{q-1}{2}}\)

证明
  1. 尝试按照 Gauss 引理 的思路研究 \(\left(\frac{p}{q}\right)\)
  2. 可设 \(t_a=aq\mod p\)\(aq=p\lfloor\frac{aq}{p}\rfloor+t_a\),有等式 \(q\sum a=p\sum \lfloor\frac{aq}{p}\rfloor+\sum t_a\)
  3. \(A=\{t_a|t_a<\frac{p}{2}\},B=\{t_a|t_a>\frac{p}{2}\}\)\(C_i=p-B_i\)\(m=size(C)\)\(T=\sum \lfloor\frac{aq}{p}\rfloor\)
  4. 易得 \(\sum j=\sum A+\sum C=\sum A+np-\sum B\),即 \(\sum a=\sum t_a+np-2\sum B\)
  5. 把 (4.) 代入 (2.) 有 \((q-1)\sum a=p(T-n)+2\sum B\) 化简 \(\frac{p^2-1}{8}(q-1)=p(T-n)+2\sum B\)
  6. 因为 \(p>2\),所以 \(p^2-1=4t(t+1)\),即 \(8\mid p^2+1\),由 (5.) 易知 \(n\equiv T\pmod 2\)\(\left(\frac{p}{q}\right)=(-1)^T\)
  7. \(\frac{p}{q}\) 看成斜率,那么把坐标系中 \(T\) 表达出来一切事情就清晰了
  8. 其实相当于算矩形面积,于是 \(\left(\frac{p}{q}\right)\left(\frac{q}{p}\right)=(-1)^{\frac{p-1}{2}\frac{q-1}{2}}\)

Cipolla 算法

\(a^2\equiv n\pmod p\),设 \(i^2\equiv a^2-n\pmod p\),其中一个解为 \((a+i)^{\frac{p+1}{2}}\),另一个解为他的相反数

证明
  1. \((a+i)^{p+1}\equiv (a+i)(a+i)^p\equiv (a+i)(a^p+i^p)\) 由二项式定理,其中组合数只有 \(C_p^0,C_p^p\) 有意义
  2. \(i^{p-1}\equiv (a^2-n)^{p-1}\equiv -1\)\((a+i)(a^p+i^p)\equiv (a+i)(a-i)\equiv a^2-i^2\equiv a^2-(a^2-n)\equiv n\)
  3. 自然 \((a+i)^{\frac{p+1}{2}}\)\(sqrt(n)\) 的一个解
实现

P5491 【模板】二次剩余

typedef long long var;
var n,mod,I;
struct num{var x,y;num(var _x=0,var _y=0):x(_x),y(_y){}};
num operator* (num a,num b)
{
    return {(a.x*b.x+a.y*b.y%mod*I)%mod,(a.x*b.y+b.x*a.y)%mod};
}
num ksm(num a,int b)
{
    num ans=1;
    while(b)
    {
        if(b&1)ans=ans*a;
        a=a*a;b>>=1;
    }
    return ans;
}
var cipolla()
{
    var a=rand()+1;
    while(ksm(I=(a*a-n)%mod,mod-1>>1).x==1)a=rand()+1;
    return ksm({a,1},mod+1>>1).x;
}
void work()
{
    cin>>n>>mod;
    if(!n)return cout<<0<<'\n',void();
    var x0=(cipolla()+mod)%mod,x1=mod-x0;
    if(x1<x0)swap(x0,x1);
    if(x0*x0%mod!=n)cout<<"Hola!"<<'\n';
    else if(x0==x1)cout<<x0<<'\n';
    else cout<<x0<<" "<<x1<<'\n';
}
int main()
{
    int T;cin>>T;
    while(T--)work();
    return 0;
}
posted @ 2024-04-20 01:13  LUHCUH  阅读(129)  评论(0)    收藏  举报