数论概论读书笔记 24.哪些素数可表成两个平方数之和

博客探讨哪些素数可表成两个平方数之和,给出判定定理,即素数 p 是两平方数之和的充要条件是 p≡1 (mod 4) 或 p = 2。介绍证明充要性的两方面思路,提及费马降价法,还阐述构造费马降价法的过程及求解关键步骤,如求解 x2≡−1 (mod p) 的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哪些素数可表成两个平方数之和

定理pp是素数,则p是两平方数之和的充要条件是p1 (mod 4)p≡1 (mod 4)p=2p=2

这里有两个断言

  • 断言A pp是两平方数之和
  • 断言B p1 (mod 4)

显然,要证明充要性,有两方面

1.若pp是两平方数之和,则a2b2(mod p) ,接着对两边取勒让德符号

(1p)(ap)2=(bp)2(1p)=1(−1p)(ap)2=(bp)2(−1p)=1

于是由二次互反律知,pp模4余1。证毕

2.我们从A2+B2=Mp开始,如果这里M=1M=1则证明完毕。所以我们考虑M2M≥2

费马的想法是,我们用现有的A,B,MA,B,M,要是能构造出a2+b2=mp  mM1a2+b2=mp 且 m≤M−1

则迭代下去,m=1m=1时就完成了证明。这种方法称为费马降价法。

但是费马没有给出具体构造的方法。

在说具体的构造方法之前,先看一个恒等式

(u2+v2)(A2+B2)=(uA+vB)2+(vAuB)2(u2+v2)(A2+B2)=(uA+vB)2+(vA−uB)2

这个式子很好证明。

下面我们考虑怎么构造费马降价法,过程如下:

img

重复这个过程直到r=1r=1,可以证明每迭代一次,pp的系数至少减半。即迭代次数为log

为了说明上述ProcedureProcedure的正确性,我们要证明5个断言的正确性。

  1. 找出数A,BA,B使得A2+B2=MpA2+B2=Mp,且M<pM<p 。为此,取同余式x21 (mod p)x2≡−1 (mod p)的一个解,由二次互反律知,当p%4=1p%4=1时,必定有解xx。所以A=x,B=1具有性质p | A2+B2p | A2+B2,而且M=A2+B2p(p1)2+12p<pM=A2+B2p≤(p−1)2+12p<p

在降阶程序的第二步,我们选取u,vu,v使其满足

uA(mod M), vB(mod M), 12Mu,v12Mu≡A(mod M), v≡B(mod M), −12M≤u,v≤12M

于是有
u2+v2A2+B20(mod M)u2+v2≡A2+B2≡0(mod M)

u2+v2=rMu2+v2=rM,其余四个断言如下:
  1. r1r≥1
  2. r<Mr<M
  3. uA+vBuA+vB能被MM整除
  4. vAuB能被MM整除

这四个断言比较容易证明。这里不再给出。

上面求解过程中关键的一步使求解x21 (mod p),可以直接使用二次剩余的板子,也可以使用随机算法。

即随机一个a[1,p1]a∈[1,p−1] ,求解ba(p1)/4 (mod p)b≡a(p−1)/4 (mod p),可知b2(ap) (mod p)b2≡(ap) (mod p),即若选取的aa不是p的二次剩余(有一半的概率),则求得的bb即为解x

由定理知有两个解x1,x2x1,x2,且x1+x2=px1+x2=p

//求解x^2 \equiv -1 (mod p)
ll ran(ll n){
    //要保证n%4=1
    assert(n%4==1);
    srand(time(0));
    for(;;){
        ll a=rand()*rand()%(n-1)+1;
        ll b=fast_exp(a,(n-1)/4,n);
        if(b*b%n==n-1) return b<=(n-1)/2 ? b:n-b;
    }
}

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值