Chgtaxihe's blog Chgtaxihe's blog
首页
练习
算法学习
读书笔记
小玩意

Chgtaxihe

首页
练习
算法学习
读书笔记
小玩意
  • 数论

    • 一些小问题
    • 二次剩余学习笔记
    • 卡特兰数学习笔记
    • 同余最短路学习笔记
    • 康托展开学习笔记
    • 快速傅里叶变换学习笔记
    • 拉格朗日插值学习笔记
    • 拓展欧几里得学习笔记
    • 斐波那契数列学习笔记
    • 斯特林数笔记
    • 本原勾股数组学习笔记
    • 模运算学习笔记
    • 欧拉函数
    • 类欧几里得学习笔记
    • 素性检测与大数分解
    • 素数计数问题
    • 组合数问题
    • 高斯整数学习笔记
      • 定理1
      • 定理2
      • 定理3(通过高斯整数证明)
      • 定理4
      • 定理5
        • 例题 洛谷2508/BZOJ1041
  • 动态规划

  • 暴力

  • 图论

  • 数据结构

  • 字符串

  • 几何

  • 博弈论

  • 其他

高斯整数学习笔记

# 高斯整数

实部与虚部都为整数的复数称为高斯整数,即a=(x+yi)(x,y∈Z)a=(x+yi)\ (x,y\in Z)a=(x+yi)(x,y∈Z)

aaa的范为N(a)=∣a2∣=x2+y2N(a)=\mid a^2\mid =x^2+y^2N(a)=∣a2∣=x2+y2,可证明N(αβ)=N(α)N(β)N(\alpha\beta)=N(\alpha)N(\beta)N(αβ)=N(α)N(β)

若α,β\alpha,\betaα,β为高斯整数,那么他们加、减、乘后仍是高斯整数(但除不一定)

下文中的希腊字母均代表高斯整数

α‾\overline{\alpha}α为α\alphaα的共轭复数

若**α\alphaα整除β\betaβ**,是指存在高斯整数γ\gammaγ使得β=αγ\beta=\alpha\gammaβ=αγ,例:(2−i)(5+3i)=13+i(2-i)(5+3i)=13+i(2−i)(5+3i)=13+i,故2−i∣13+i2-i\mid 13+i2−i∣13+i

1、−1、i、−i1、-1、i、-i1、−1、i、−i为高斯整数的单位,能整除任意高斯整数

对于α\alphaα,他的全部相伴为1α、−1α、iα、−iα1\alpha、-1\alpha、i\alpha、-i\alpha1α、−1α、iα、−iα

# 高斯素数

定义:若非零高斯整数π\piπ不是单位,而且只能够被单位和他的相伴整除,则称之为高斯素数(即π\piπ恰有8个因子--4个单位和4个相伴)

# 定理1

若ppp为有理素数,且N(π)=pN(\pi)=pN(π)=p,则π、π‾\pi、\overline{\pi}π、π是高斯素数,ppp一定不是高斯素数

注:判断α\alphaα是否为高斯素数,即证明是否存在α=(a+bi)(c+di)a,b,c,d∈Z\alpha=(a+bi)(c+di)\ a,b,c,d\in Zα=(a+bi)(c+di)a,b,c,d∈Z且(a+bi)(a+bi)(a+bi)或(c+di)(c+di)(c+di)不为单位或α\alphaα的相伴

注2:存在ppp(如:2)为有理素数但不是高斯素数的复数(因为2=(1+i)(1−i)2=(1+i)(1-i)2=(1+i)(1−i))

# 定理2

γ\gammaγ为非零高斯整数,且γ\gammaγ不是单位,则

  1. γ\gammaγ能够表示成一些高斯素数的乘积
  2. 该分解在某种意义上来说是唯一的

γ=π1π2...πs=ρ1ρ2...ρt\gamma=\pi_1\pi_2...\pi_s=\rho_1\rho_2...\rho_tγ=π1​π2​...πs​=ρ1​ρ2​...ρt​

其中πi、ρi\pi_i、\rho_iπi​、ρi​都是高斯素数,则有s=ts=ts=t,且重新编号后可使得πi\pi_iπi​和ρi\rho_iρi​是相伴的

# 定理3(通过高斯整数证明)

若有理素数ppp型如4k+1(k∈Z+)4k+1(k\in Z^+)4k+1(k∈Z+),则ppp可以表示为两个有理整数的平方和

与四平方和定理一起使用(?)

# 定理4

若ppp为有理素数,则可按如下法则分解

  1. 若p=2p=2p=2,则p=−i(1+i)2=i(1−i)2p=-i(1+i)^2=i(1-i)^2p=−i(1+i)2=i(1−i)2
  2. 若p≡3(mod4)p\equiv3\pmod{4}p≡3(mod4),则p=πp=\pip=π是高斯素数
  3. 若p≡1(mod4)p\equiv1\pmod{4}p≡1(mod4),则p=ππ′p=\pi\pi'p=ππ′,其中π\piπ和π′\pi'π′是不相伴的高斯素数,且N(π)=N(π′)=pN(\pi)=N(\pi')=pN(π)=N(π′)=p

# 定理5

对于正整数n=2mp1e1p2e2...psesq1f1q2f2...qtftn=2^mp_1^{e_1}p_2^{e_2}...p_s^{e_s}q_1^{f_1}q_2^{f_2}...q_t^{f_t}n=2mp1e1​​p2e2​​...pses​​q1f1​​q2f2​​...qtft​​

其中ppp为4k+14k+14k+1的素数,qqq为4k+34k+34k+3的素数,eie_iei​为非负整数,fif_ifi​为非负偶数,那么有

4(e1+1)(e2+1)...(es+1)4(e_1+1)(e_2+1)...(e_s+1)4(e1​+1)(e2​+1)...(es​+1)种方法将nnn表示为两个有理整数的平方和(此处次序不同或符号不同都被认为是不同的表示法)

引入:要求方程a2+b2=na^2+b^2=na2+b2=n的解的个数,只需要计算nnn分解成共轭高斯整数的乘积n=(u+iv)(u−iv)n=(u+iv)(u-iv)n=(u+iv)(u−iv)的方法数(a2+b2=n⇔(a+bi)(a−bi)=na^2+b^2=n\Leftrightarrow (a+bi)(a-bi)=na2+b2=n⇔(a+bi)(a−bi)=n)

据说看这个视频 (opens new window)有助于理解该定理

# 例题 洛谷2508/BZOJ1041 (opens new window)

题目:求一个给定的圆(x2+y2=r2)\left(x^{2}+y^{2}=r^{2}\right)(x2+y2=r2)的半径rrr ,在圆周上有多少个点的坐标是整数。(r≤2⋅109)(r\le2\cdot10^9)(r≤2⋅109)

分析如下,令v=r2v=r^2v=r2,出现在vvv的分解中型如4k+34k+34k+3的素数一定成对出现,套用定理5的公式即可

#include <bits/stdc++.h>
#define ll long long

using namespace std;
ll r;

int main(){
    cin >> r;
    if(r == 0){cout<<1<<endl;return 0;}
    ll ans = 1;
    while(r % 2 == 0) r>>=1;
    for(ll i=3; i*i<=r; i+=2){
        ll cnt = 0;
        while(r%i==0) cnt++, r/=i;
        if(cnt > 0 && (i%4==1))
            ans *= (cnt*2 + 1);
    }
    if(r > 1 && (r%4==1)) ans *= 3;
    cout << (4 * ans) << endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

恐怖如斯

# 参考

《初等数论及其应用》

高斯整数、高斯素数、费马平方和定理 (opens new window)

上次更新: 2021/02/24, 03:37:30
组合数问题
动态dp学习笔记

← 组合数问题 动态dp学习笔记→

最近更新
01
深入理解Java虚拟机
03-04
02
DNS工作原理
02-27
03
改用VuePress啦
02-23
更多文章>
Theme by Vdoing | Copyright © 2019-2021
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式