高斯整数与平方和问题
Definition 1.1
高斯整数是定义在复数域上的,实部和虚部均为整数的复数集,遵循复数运算法则
形式化的,我们把满足 z=a+bi,其中a,b∈Z 的复数 z 称为高斯整数(Guassian Integers)
Definition 1.2
定义高斯整数 z=a+bi 的 norm(模长) 为 N(z)=a2+b2
特别地,定义 norm 等于 1 的高斯整数为 unit(单位元)
Definition 1.3
对于高斯整数 x,y,若存在高斯整数 a 使得 ax=y,则称 x 为 y 的因子,记作 x∣y
Lemma 1.1
对于高斯整数a,b,N(ab)=N(a)N(b)
证明:设 a=a1+a2i,b=b1+b2i,则
LHSRHS=(a1b1−a2b2)2+(a1b2+a2b1)2=a12b12+a12b22+a22b12+a22b22=(a12+a22)(b12+b22)=a12b12+a12b22+a22b12+a22b22
故LHS=RHS,引理成立
注:上述证明中,形如
(a2+b2)(c2+d2)=(ac+bd)2+(ad−bc)2
的式子称为斐波那契恒等式,根据该恒等式可以得到柯西不等式及其取等条件
Lemma 1.2
对于高斯整数 a,b,若 a∣b,则 N(a)∣N(b),且逆命题不成立
证明:
- 证明命题成立,设 b=az,则 N(b)=N(az)=N(a)N(z)
故 N(a)∣N(b),命题成立
- 证明逆命题不成立,设 N(b)=zN(a),而 z 不一定能表示成 N(z)
的形式,故逆命题不成立
Definition 2.1
若高斯整数 z 不是单位元,且除自身及单位元外没有其他因子,则称 z 为高斯素数(Guassian Prime Integers)
比如说 2=(1+i)(1−i),故 2 不是高斯素数
而 3 不能继续分解,是高斯素数
Theorem 2.1
若素数 P 满足丢番图方程 x2+y2=P 无解,则 P 为高斯素数
这个定理直接证比较困难,我们证明它的逆否命题:若 P 不是高斯素数,则丢番图方程 x2+y2=P 有解
- 证明必要性:设 (a,b) 是丢番图方程 x2+y2=P 的一组解,则
P=a2+b2=(a+bi)(a−bi)
P不是高斯素数
P=(x+yi)(a+bi)=ax−by+(bx+ay)i
由于 P 是整数,故 ax−by=P 且 bx+ay=0,得到
(a2+b2)x=aP
由于 a+bi 不是单位元,a2+b2=1,且 P 为素数,故 a2+b2=P
故P不是高斯素数时,方程有解
Lemma 2.1
若高斯整数 z 满足 N(z) 是素数,则 z 是高斯素数
我们同样证明它的逆否命题:若 z 不是高斯素数,则 N(z) 不是素数
若 z 不是高斯整数,则存在非单位元 a,b 使得 z=ab
则 N(z)=N(ab)=N(a)N(b),故 N(z) 不是素数
Theorem 2.2(高斯整数的代数基本定理)
若 z 是高斯整数,不考虑单位元的影响,存在唯一的高斯素数分解方式使得
z=∏ziqi
证明:根据代数基本定理,
N(z)=∏N(zi)qi
是唯一的,故 z=∏ziqi 是唯一的
注:在代数基本定理中 10=2×5,若考虑 −1 的话 10=(−2)×(−5),分解不唯一,所以在代数基本定理中不考虑单位元 ±1 的影响
类似的,这里也不考虑高斯整数单位元的影响
Lemma 2.2
a2+b2≡3(mod4)
恒不成立
证明:
-
若 4∤a2,设 a=∏piqi,则a2=∏pi2qi,由欧拉定理得 a2≡∏pi2qi%ϕ(4)≡∏pi2qi%2≡1(mod4)
-
若 4∣a2,则 a2≡0(mod4)
故 a2≡0,1(mod4),得到
a2+b2≡0,1,2(mod4)
Lemma 2.3
若 q 是素数,且 q≡3(mod4),则 q 为高斯素数
证明:设 q=z1z2,且 z1=a+bi,则
N(q)=q2=N(z1)N(z2)
而 N(z1)=a2+b2≡3(mod4)
故 N(z1)=q,因此必然有 N(z1)=1 或 N(z2)=1
Lemma 2.4
若 q 为素数,且
q≡1(mod4)
则存在高斯素数 z 使得 q=zz
证明:由于 q≡1(mod4),所以
(−1)2q−1=1
故 −1 是模 q 下的二次剩余,因此存在整数 c 使得
c2≡−1(modq)
即 q∣(c+i)(c−i),但(c+i) 和 (c−i) 都不能整除 q,故 q 不是高斯素数
因此存在 z1,z2,使得 q=z1z2,而
N(q)=q2=N(z1)N(z2)
故 N(z1)=N(z2)=q,所以 z1,z2 互为共轭
Problem 3.1
求丢番图方程
a2+b2=n
的整数解 (a,b) 的个数
设 z=a+bi,则 zz=a2+b2=n,所以问题就变成了求乘积为 n 的共轭高斯整数的数目
我们把 n 按照如下方式分解:
n=2a∏piqi∏pjqj
其中 pi≡1(mod4),pj≡3(mod4)
那么我们只需要把这些因子划分成两部分使得这两部分乘积的 norm 相等,划分的方案数就是答案
由 Lemma2.3 可知,pj 已经是高斯素数,不能继续分解,只能均分到这两部分,显然如果存在qj是偶数,则方程无解
由 Lemma2.4 可知,pi 可以继续分解为两个共轭高斯整数
设 pi=zz,则 piqi=zqizqi
而复数相乘满足 norm 相乘,辐角相加,故分配时 z 与 z 对两边模长的贡献是相同的
所以只需要保证两边分配的 z 和 z 的总数相同即可
例如 52=(2+i)2(2−i)2,则分配方案如下:
-
左边:(2+i)(2+i) 右边:(2−i)(2−i)
-
左边:(2+i)(2−i) 右边:(2−i)(2+i)
-
左边:(2−i)(2−i) 右边:(2+i)(2+i)
可以看出,piqi 项共有 (qi+1) 种分配方案,所以 ∏piqi 的贡献就是
∏(qi+1)
而在 Theorem2.2 中,我们提到高斯整数分解时可以通过乘以单位元得到不同的分解方案,例如
5=(2+i)(2−i)=(−2−i)(−2+i)=(−1+2i)(−1−2i)=(1−2i)(1+2i)
在考虑单位元的情况下,每一种分解方案就有 4 种分解方式,所以答案应该是
4∏(qi+1)
最后我们再考虑 2a 项的问题,注意到
2=(1+i)(1−i)=i(1−i)2
所以只能把 (1−i) 均等分配到两边,而 i 作为单位元不影响答案,故 2a 只有一种分配方案
问题至此完美解决,最终的答案就是 4∏(pi+1)
BZOJ1041 圆上的整点
给定圆
x2+y2=R2
求在圆周上有多少个点的横纵坐标都是整数
设 R=2a∏piqi∏piqi,其中 pi≡1(mod4),pj≡3(mod4),则
R2=22a∏pi2qi∏pj2qj
因为 2qj 为偶数,所以这一项不会导致无解
而 22a 以及 ∏pj2qj对答案无影响,所以答案就是
4∏(2qi+1)
具体做法就是分解质因数,找到形如 4k+1 的质因子,计算次数即可,时间复杂度O(n)