class="markdown_views prism-github-gist">
1.定义
设p是
奇素数(大于2的素数),如果二次同余式
x2=a(mod p),(a,p)=1 有解,则称a为模p的平方剩余(一个数的平方模p的余数),否则a称模p的平方非剩余。平方剩余和平方非剩余又称为二次剩余和二次非剩余。
1.1 举个例子
请求出11的所有二次剩余。
在解决这个问题之前,首先我们要清楚11的一个剩余系为0,1,2,3,…,10。所以11的二次剩余只可能来源于这些数。为了决定哪些整数是11的二次剩余,我们计算整数1,2,3,…,10的平方(
有同学可能就要问了,为什么只计算这10个数的平方呢?因为《初等数论及其应用》中的引理11.1提到了同余方程或者无解或者有两个模p不同于的解,所以我们只需要找这10个数就可以了,那有可能同学又要问了,怎么把0给漏掉了,因为(a,p) = 1,可以打消疑虑了吧。),得到
12≡102≡1(mod 11)
22≡92≡4(mod 11)
32≡82≡9(mod 11)
42≡72≡5(mod 11)
52≡62≡3(mod 11)
因此,11的二次非剩余是1,3,4,5,9,二次非剩余是2,6,7,8,10.
2.平方剩余和平方非剩余的个数
设p是奇素数,在模p的简化剩余系中,有
2p−1个平方剩余,
2p−1 个平方非剩余。
这个定理很有用:
以后我们求模p的平方剩余时,就可以只计算下列数了
12,22,…,(2p−1)2(mod p)
3.欧拉判别法
欧拉判别法可以判断一个数是不是模p的平方剩余
设p是奇素数,(a,p) = 1. a是模p平方剩余的充分必要条件是
a2p−1≡1(mod p)
a是模p的平方非剩余的充分必要条件是
a2p−1=−1(mod p)
3.1 例1
判断3是不是模17的平方剩余?
根据欧拉判别法,
a = 3, p = 17, 所以
2p−1=8
我们需要得到
38≡1(mod 17)
或者
38≡−1(mod 17)
我们的计算方式是"从底层起"
因为
32≡9(mod 17)
所以
34≡81≡−4(mod 17)
方程同时平方得
38≡16(mod 17)≡−1(mod 17)
所以3是模17的
平方非剩余
3.2 例2
7是不是模29的平方剩余
2p−1=14
714是我们的目标。老办法,从底层起
72=49≡−9(mod 29)
74≡(−9)2≡81≡−6(mod29)
78≡(−6)2≡36≡7(mod 29)
所以
714=78×74×72≡1(mod 29)
所以7是模29的平方剩余。