数论和有限域的基本概念
写着一部分的时候我是抗拒的,不想看数学,不想看数学,不想看数学!!!!!但是,我和小伙伴说看到这不想看的时候,他说,这是精华啊,快看!!!!!呜呜呜呜呜,浅看一下吧。菜鸟进击-------------------------------------------------------------------
1、整除性和除法
1.1.1 整除性
设a,b,m是整数,如果 a = mb,我们说非零整数b整除a。用 b | a表示b整除a,此时b是a的因子。如:6 | 24,13 |182, -5 | 20, -3 | 33
接下来看整数整除的性质:
- 如果 a | 1,则 a = ± 1
- 如果 a | b 且 b | a,则 a = ± b
- 任意非零整数b整除0
- 如果 a | b,b | c,则 a | c 比如 11 | 66,66 | 198 = 11 | 198
- 如果 b | g,b | h,则对任意的整数m和n,有 b | ( mg + nh )
1.1.2 除法
给定任意正整数n和任意非负整数a,如果用n除a,我们得到一个整数商q和一个整数余数r,可写成
a = qn + r 0 ≤ r < n;q = (a/n)下取整
余数r经常被称为剩余数。
2、欧几里得算法Euclid:求两个正整数的最大公因子
2.1 最大公因子
我们用gcd( a , b )表示a和b的最大公因子,即能够同时整除a和b的最大整数。定义特殊点gcd( 0, 0 ) = 0。假设c是a和b的最大公因子,则有以下性质:
c是a和b的因子
a和b的任何因子都是c的因子
公式定义为gcd( a, b ) = max [ k, k | a 且 k | b]
因为我们所求的最大公因子是正数,所以gcd( a, b ) = gcd( a, -b ) = gcd( -a, b ) = gcd( -a, -b ) 。如gcd( 60, -24 ) = 12。特殊的gcd( a, 0 ) = |a|
如果gcd( a, b ) = 1,那么我们称a和b互素。
2.2 求最大公因子
辗转求余法知道d = gcd ( rn, 0 ) = rn
3、模运算
3.1 模
如果a是整数,n是正整数,则定义a模n是a除以n所得的余数。整数n称为模数。因此,对于任意整数a,总有 a = qn + r 0 ≤ r < n;q = (a/n)向下取整
11 mod 7 = 4; -11 mod 7 = 3
如果( a mod n ) = ( b mod n ),则称整数a和b是模n同余的。可以表示为a ≡ b ( mod n )。如果 a ≡ 0 ( mod n ),则 n | a。
3.2 同余的性质
- 如果 n | (a - b),那么 a ≡ b ( mod n )
- a ≡ b ( mod n ),隐含b ≡ a ( mod n )
- a ≡ b ( mod n ),b ≡ c ( mod n ),那么a ≡ c ( mod n )
3.3 模算术运算
根据定义可知,运算 mod n将所有的整数映射到集合{ 0,1,2,……,n - 1 }
模算术有以下性质
- [ ( a mod n ) + ( b mod n ) ] mod n = ( a + b ) mod n
- [ ( a mod n ) - ( b mod n ) ] mod n = ( a - b ) mod n
- [ ( a mod n ) * ( b mod n ) ] mod n = ( a * b ) mod n
3.4 模运算的性质
定义比n小的非负整数集合为Zn:Zn = { 0,1,2,……,n - 1 },这个集合被称为剩余类集,或模n的剩余类。准确地说,Zn中每一个整数都代表一个剩余类。我们可以将模n的剩余类表示为[0] [1] [2] …… [n - 1],其中[r] = {a:a是一个整数,a ≡ r ( mod n )}
举个栗子吧,这里需要一个栗子
- 模4的剩余类:
- [0] = { …… -16 -12 -8 -4 0 4 8 12 16 ……}
- [1] = { …… -15 -11 -7 -3 1 5 9 13 17 ……}
- [2] = { …… -14 -10 -6 -2 2 6 10 14 18 ……}
- [3] = { …… -13 -9 -5 -1 3 7 11 15 19 ……}
从栗子中可以看出,在剩余类的所有整数中,通常用最小的非负整数代表这个剩余类。寻找与k是同余的最小非负整数的过程,称为模n的k约化。
3.5 修改的欧几里得算法
对于任意非负整数a和任意正整数b gcd ( a,b ) = gcd ( b,a mod b )
if ( b = 0 ) then return a;
else return Euclid ( b, a mod b);
3.6 扩展欧几里得算法
d = gcd ( a,b ) = ax + by
对于给定的整数a和b,ax+by的最小正整数等于 gcd ( a,b )
对于给定的a和b,扩展欧几里得计算( x, y, d )。
4、群 环 域
4.1 群
代数结构 - 吉吉的奥利奥 - 博客园 (cnblogs.com) 这里有过介绍
设<G,*>是一个代数系统,其中G是非空集合,*是G上一个二元运算,G中的每一个序偶( a,b )通过计算生成G中的元素 ( a*b ),并满足以下公理
(1)运算*是封闭的:如果a和b都属于G,则a*b也属于G
(2)运算*是可结合的:对于G中任意元素a、b、c,都有a * ( b * c ) = ( a * b ) *c
(3)存在幺元e:G中存在一个元素e,对于G中任意元素a,都有a*e = e*a = a成立
(4)对于每一个元素x∈G,存在着他的逆元x-1,使得x * x-1 = x-1 * x = e
则称<G,*>是一个群。
在此,如果对于G中任意元素a和b,都有a * b = b * a成立,则<G,*>是一个交换群(阿贝尔群)。
循环群:
定义a0 = e 作为单位元,如果群中每一个元素都是一个固定元素a的幂ak,则称群G为循环群。我们认为元素a生成了群G,或者说a是群G的生成元。循环群总是交换群,有可能是有限群,也有可能是无限群。
4.2 环
环R是一个有两个二元运算的集合,这两个二元运算分别称为加法和乘法,对于R中任何元素abc满足以下公理:
(1)R关于加法是一个交换群
(2)如果a和b都属于R,则ab也属于R
(3)对于R中任意元素abc,有a(bc) = (ab)c
(4)对于R中任意元素abc,都有a ( b + c ) = ab + ac; ( a + b )c = ac + bc
本质上环就是一个集合,我们可以在上面进行加减乘法而不脱离该集合。
实数上所有n阶方阵的集合关于加法和乘法构成一个环。
在此,对于R中任意元素a、b,有ab=ba,则R是一个交换环。Zn就构成一个交换环。
基于交换环,满足乘法单位元1使得a1=1a=a;无零因子若ab=0,则必有a=0或者b=0,我们称为整环。
4.3 域
域F是一个有两个二元运算的集合,这两个二元运算分别称为加法和乘法,对于R中任何元素abc满足以下公理:
(1)F是一个整环
(2)F中任意元素a(除0),F都存在一个元素a-1使得aa-1=a-1a=1成立
本质上域就是一个集合,我们可以在上面进行加减乘法而不脱离该集合。除法可以定义为a/b=a*b-1
5、有限域GF(p)
阶为pn的有限域一般记为GF(pn),GF代表Galois域,以一位研究有限域的数学家名字命名。
5.1 阶为p的有限域
给定一个素数p,元素个数为p的有限域GF(p)被定义为整数{0,1,2,……,p - 1 }的集合Zp,其运算为模p的算术运算。比如Z7就是一个有限域,每个元素都有a + b = 0 mod 7,a * b = 1 mod 7。
5.2 求GF(p)中乘法逆元
根据扩展欧几里得算法得知,如果 by mod a = 1,则y = b-1
6、多项式运算
6.1 普通多项式运算
一个n次多项式可以写为 f(x) = anxn + an-1xn-1 + …… + a1x + a0 = Σi=0 n aixi,其中ai是指某个系数集S中的元素,且an ≠ 0。我们称f(x)是定义在系数集S上的多项式。
6.2 系数在Zp中的多项式
假如系数集S是域F的元素,我们称其为域F上的多项式。这种情况下,系数集S是一个环,称为多项式环。
对我们而言GF(2)上的多项式最有意义。他的加法等价于异或运算,乘法等价于逻辑与运算。模2的加减法是等价的。
域F上的多项式f(x)被称为不可约的/既约的。当且仅当f(x)不能表示为两个多项式的积。一个不可约多项式也成为素多项式。
7、有限域GF(2n)
7.1 动机
我们要寻找一个包含2n个元素的集合,其上定义了加法和乘法使之成为一个域。给集合的每一个元素赋值为0到2n-1之间唯一的整数。我们不会使用模算术,因为那样不能构成域。我们使用多项式算术来构造需要的域。
7.2 多项式模运算
f(x) = an-1xn-1 + …… + a1x + a0 = Σi=0 n-1 aixi ai在集合{0,1,……,p - 1}
如果乘法运算的结果是次数大于n-1的多项式,那么必须将其除以某个次数为n的既约多项式m(x)取其余式r(x),即r(x) = f(x) mod m(x)
设m(x)为n次多项式,则模m(x)剩余类集合有pn个元素,其中每个元素都可以表示成一个m次多项式(m<n)。
以m(x)为模的剩余类[x+1]由所有满足a(x)≡(x+1) mod m(x)的多项式a(x)组成。就是说,剩余类[x+1]中的所有多项式a(x)满足等式a(x) mod m(x) ≡ (x+1) 。
由此可知,以n次既约多项式m(x)为模的所有多项式组成的集合满足域的所有公理,形成一个有限域。任意具有相同的阶的有限域具有相同的结构,但是元素的表示和标记可能不同。构造一个有限域GF(23),需要选择一个3次既约多项式,使得不同函数的加乘模上既约多项式之后都在该有限域内。
7.3 求乘法逆元
可以由扩展欧几里得算的
7.4 多项式的特性
f(x) = an-1xn-1 + …… + a1x + a0 = Σi=0 n-1 aixi
可以由n个二进制系数(an-1,an-2,……,a1,a0)系数表达法唯一的表达。因此,多项式可以表示成一个n位的二进制整数。
加法可以由异或得到,乘法一般的,在GF(2n)上的对于n次多项式p(x),有 xn mod p(x) = p(x) - xn
7.5 生成元
1、阶为q的有限域F的生成元是一个元素g,即域F的元素为0,g0,g1,g2,……,gq-2。考虑到由多项式f(x)定义的域F,如果F内的一个元素b满足f(b)=0,则称b为多项式f(x)的跟。
一个不可约多项式的根g是这个不可约多项式定义的有限域的生成元。
举个栗子,这里还蛮难理解的。
构造一个有限域GF(23),需要选择一个3次既约多项式,x3 + x + 1。设生成元为g,则g满足f(g) = g3 + g + 1 = 0。因此,方程解满足 g3 = -g - 1 = g + 1。
g4 = g * g3 = g ( g + 1 ) = g2 + g
g5 = g * g4 = g ( g2 + g ) = g3 + g2 = g2 + g + 1
g6 = g * g5 = g ( g2 + g + 1 ) = g3 + g2 + g = g2 + g + g + 1 = g2 + 1
g7 = g * g6 = g ( g2 + 1 ) = g3 + g = g + g + 1 = g0
g的幂产生了GF(23)所有的非0多项式。同样的,对所有k,有gk = gk mod 7
幂表示 | 多项式表示 | 二进制表示 | 十六进制表示 |
0 | 0 | 000 | 0 |
g0 | 1 | 001 | 1 |
g | g | 010 | 2 |
g2 | g2 | 100 | 4 |
g3 | g + 1 | 011 | 3 |
g4 | g2 + g | 110 | 6 |
g5 | g2 + g + 1 | 111 | 7 |
g6 | g2 + 1 | 101 | 5 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效