Gaussian 整数学习笔记
引言
或许应该叫二次域入门中的入门笔记?
这个东西还一直鸽着……打算好好学学。
毕竟有一车数论知识,咱都还鸽着。
别人都能熟练运用二次互反律了,我还在学 Gaussian 整数。
其实 devin 半年前就讲过这玩意……
学习资料。stO ckh。
部分参考 OI wiki。
由于是学习笔记,加上我也得在赶紧 OI 里运用这些东西,一些证明什么的就鸽了。反正学习资料里讲的很详细,OI wiki 上也有。
感觉之前在高代下册里学的环论基础全部忘光了……希望能趁此机会捡起一点来吧。由于很多东西都记不清了, Gaussian 整数一节下面可能会有大量概念性谬误,欢迎大家指正。
目前暂时先鸽到圆上整点计数为止。
二次剩余
由于学习资料里有,跟着带上先。
以下均在 \(p\) 为奇质数时讨论。
Legendre 符号
Euler 判别准则
使用原根可以轻松证明。此处略去。
Cipolla 算法
使用原根的知识,我们知道,在 \([1,p)\) 中有恰一半数有二次剩余,一半没有。
现在要求 \(n\) 的一个二次剩余,咋办?
随机选择一个数 \(a\),若 \(w=a^2-n\) 无二次剩余,则
为一合法解。
其中此幂次为在扩域到 \(\mathbb Z_p[\sqrt w]\) 之后的幂次。
容易发现期望常数轮随机即可得解。
考虑为什么这么做是对的。
从学习资料里贺一段证明下来。
首先,易知 \(\forall x\in[1,p-1],\binom px\equiv 0\pmod p\)。
因此,由二项式定理,\((a+\sqrt w)^p=\sum_{k=0}^p\binom pka^k(\sqrt w)^{p-k}\equiv a^p+(\sqrt w)^p\pmod p\)。
根据费马小定理,\(a^p\equiv a\pmod p\)。
根据 Euler 判别准则,\((\sqrt w)^p=w^{\frac{p-1}2}\sqrt w\equiv-\sqrt w\pmod p\)。
因此,\((a+\sqrt w)^{p+1}\equiv(a+\sqrt w)(a-\sqrt w)=a^2-w=n\pmod p\)。
现在再来看,为啥这个算法要求 \(w\) 无二次剩余呢?
因为我们在证明中用到了 \((\sqrt w)^p=w^{\frac{p-1}2}\sqrt w\equiv-\sqrt w\pmod p\) 这一条,而这一条依赖于 Euler 判别准则……
代码容易写出。
ullt v=0,w;
while(power(w=(v*v+p-n)%p,(p-1)/2,p)==1)v++;
typedef std::pair<ullt,ullt>num;
num base(v,1),ans(1,0);
auto mul=[&](num a,num b){
return num((a.first*b.first+w*a.second%p*b.second)%p,(a.first*b.second+a.second*b.first)%p);
};
ullt index=(p+1)/2;
while(index){
if(index&1)ans=mul(base,ans);
base=mul(base,base),index>>=1;
}
v=ans.first,_min(v,p-v);
printf("%llu %llu\n",v,p-v);
Gaussian 整数
记 \(i^2=-1\),则 Gaussian 整数定义为
中的每个元素。
加法、乘法定义显然,和复数类似。
事实上,这是一个整环,满足:
- 对加法、乘法分别满足封闭性、结合律、交换律,且存在幺元(单位元,此处即 \(0\) 与 \(1\))。换言之,这是一个交换幺环。
- 无零因子,即不存在 \(a,b\neq0\),使 \(ab=0\)。
其对应的可逆元群(单位群)为 \(U(\mathbb Z[i])=\{1,i,-1,-i\}\)。
\(z=a+bi\) 的共轭 \(\bar z\) 定义为 \(a-bi\),迹定义为 \(\operatorname{tr}z=z+\bar z=2a\),范数定义为 \(\|z\|=z\bar z=a^2+b^2\)。
我们称两个数 \(z_1,z_2\in\mathbb Z[i]\) 相伴,当且仅当存在 \(e\in U(\mathbb Z[i])\),使得 \(z_1=ez_2\)。
(顺带一提,容易发现相伴关系构成一个等价关系,群 \(U(\mathbb Z[i])\) 对应的相伴关系把 \(\mathbb Z[i]\) 划分为等价类集合 \(\mathbb Z[i]/U(\mathbb Z[i])\),我们称其为 \(\mathbb Z[i]\) 在群 \(U(\mathbb Z[i])\) 作用下的商集)
事实上,Gaussian 整数环还是一个欧几里得整环,满足唯一分解定理、裴蜀定理与辗转相除法等一系列基础数论定理。
此处的唯一分解定理、裴蜀定理与辗转相除法定义与通常所见的相比比较模糊,感性理解好了。严格的定义稍显复杂,可以参考学习资料 2 的相关内容。
啊下面的章节好像会提到 Gaussian 素数和辗转相除法,那没事了(
费马平方和定理
设 \(p\) 是奇质数,则有
不会证明,摆了。详细证明可以看学习资料。
而且,这样的 \((a,b)\) 无序对存在且唯一。
对于这种素数,我们称为 \(4n+1\) 型素数。另外的奇质数称为 \(4n+3\) 型素数。
Gaussian 素数
Gaussian 整数环的素元称为 Gaussian 素数,其共轭、相伴仍为 Gaussian 素数。
等等,素元定义是啥啊?
如果在交换环 \(R\) 上,一个非零因子且非幺元的元素 \(p\) 满足 \(a,b\in R,p|ab\Rightarrow p|a\lor p|b\),则称其为素元。
\(z=a+bi\) 为 Gaussian 素数,当且仅当下列条件之一成立:
- \(a\) 为 \(0\) 且 \(|b|\) 为 \(4n+3\) 型素数;或者 \(b\) 为 \(0\) 且 \(|a|\) 为 \(4n+3\) 型素数。(换言之,\(z\) 是 \(4n+3\) 型素数在 \(\mathbb Z[i]\) 上的相伴元)
- \(\|z\|=a^2+b^2\) 为 \(2\) 或 \(4n+1\) 型素数。(换句话说,就是素数)
证明继续咕咕。
按 OI-wiki 上的说法,我们把这个细分为三类数:
- 是 \(4n+3\) 型素数在 \(\mathbb Z[i]\) 上的相伴元的,我们称为惯性数。
- 否则,若 \(\|z\|=2\),我们称为分歧数。
- 否则,我们称为分裂数。
这个名字生动形象地展现了这些数的形态。
容易证明,对每个质数 \(p\),其对应的 Gaussian 素数个数,在 \(p\) 为 \(4n+1\) 型素数时有 \(8\) 个,在 \(p\) 为 \(4n+3\) 型素数时为 \(4\) 个,在 \(p\) 为 \(2\) 时也为 \(4\) 个。
对 \(2\),其对应 \(1+i,1-i,-1+i,-1-i\) 四个分歧数,其两两相伴且成对共轭。
对 \(4n+3\) 型素数,其对应 \(p,-p,pi,-pi\) 四个惯性数,其两两相伴且成对共轭。
对 \(4n+1\) 型素数,设 \(p=a^2+b^2(0<a<b)\),其对应 \(a+bi,b-ai,-a-bi,-bi+a,a-bi,b+ai,-a+bi,-bi-a\) 八个分裂数,前后四个分别两两相伴,且两组一一对应共轭。
\(\mathbb Z[i]\) 上的唯一分解定理要求对每组相伴素数仅考虑其中一个,最后再乘上一个可逆元。
辗转相除法
所以辗转相除法定义到底是什么?
我们得先定义带余除法。
这里贺一段下来。
设 \(a,b\in\mathbb Z[i]\),那么必定存在一组 \(q,r\in\mathbb Z[i]\) 使得 \(a=qb+r\land\|r\|\le\frac{1}{2}\|b\|\)。
我们称 \(q\) 为 \(a\) 整除 \(b\) 的商,称 \(r\) 为 \(a\) 整除 \(b\) 的余数。
证明也贺一段下来。这是一段构造性证明。
假设 \(\frac ab=x+yi\)。
我们不妨取 \(q=x'+y'i\),其中 \(x'=\left\lfloor x+\frac12\right\rfloor,y'=\left\lfloor y+\frac12\right\rfloor\)。
则得到 \(|x-x'|\le\frac12,|y-y'|\le\frac12\)。
因此 \(\|(x-x')+(y-y')i\|\le\frac12\)。
于是 \(r=a-qb=b((x-x')+(y-y')i)\) 满足 \(\|r\|=\|b\|\times\|(x-x')+(y-y')i\|\le\frac12\|b\|\)。
然后辗转相除法就容易写出了。基本就和平常所写的一致。
可以参考下面的实现。
分解 \(4n+1\) 型素数
好,到应用层面了。
现在,给你奇质数 \(p=4n+1\),要求对其做二平方和分解。
怎么做?
设 \(p=a^2+b^2\)。
记 \(z=a+bi\),则 \(p=\|z\|\)。
设 \(k\in\mathbb Z\) 满足 \(k^2\equiv-1\pmod p\),则 \(p|(k+i)(k-i)\)。
则取 \(z=\gcd\{p,k+i\}\) 为一组可行解。
对于 \(k\) 的选取,设 \(\left(\dfrac ap\right)\equiv a^{\frac{p-1}2}\equiv-1\pmod p\),则 \(a^{\frac{p-1}4}\bmod p\) 为一可行 \(k\)。
显然在期望常数轮随机后即可找到合适的 \(k\)。
题目链接。
注意乘法会爆 long long
,要使用精度较高的方法。
示例代码。
圆上整点计数
高明科技。
求 \(x^2+y^2=C\) 上的整点 \((x,y)\) 数目。
即求范数为 \(C\) 的 Gaussian 整数 \(z=a+bi\) 个数。
考虑先在 \(\mathbb Z^+\) 上运用唯一分解定理。
不妨先考虑一种解法,然后再取四个相伴。
对每个素因子我们分别考虑其分解为 \(u\bar u\) 后 \(u\) 对 \(z\) 的贡献。显然答案互不干涉。
\(2\) 因子显然对答案无影响。
\(4n+3\) 型素数因子若有 \(2\nmid a_p\),则此题无解;否则无影响。
\(4n+1\) 型素数因子有 \(a_p+1\) 种分配答案的方法。
因此,再考虑上可逆元的贡献 \(4\),答案即为
然后容易注意到这是一个积性函数,所以可以用 \(\rm Min\_25\) 筛解决前缀求和问题。
但我不会 \(\rm Min\_25\),所以别想了。
本文来自博客园,作者:myee,转载请注明原文链接:https://www.cnblogs.com/myee/p/Gaussian-Integer.html