数论和有限域
b|a: b整除a,b是a的因子。
a|b,b|c,则a|c。
欧几里得算法 Euclid & GCD
两个整数称为互素的,如果它们唯一的正整数公因子为1.
▶️ gcd(a,b):a,b的最大公因子。gcd(0,0)=0.
gcd(a,b)=max[k,其中k|a且k|b]
所求最大公因子为正数,一般来说gcd(a,b)=gcd(|a|,|b|),同样,因为0可被所有非零整数整除,所以gcd(a,0)=|a|。
如果gcd(a,b)=1,那么a和b互素
▶️ 【基于java】: a mod b(仅正数)和a%b(结果有正有负)相差不多,均表示求余数。 (a,b模c同余)
▶️ 欧几里得算法
d= GCD(a,b) = GCD(b, a mod b) (b ,a和b的余数)
A=a, B=b
while B>0
R = A mod B
A = B, B = R
return A (B=0,返回A)
Example GCD(1970,1066)
1970 = 1 x 1066 + 904 gcd(1066, 904)
1066 = 1 x 904 + 162 gcd(904, 162)
904 = 5 x 162 + 94 gcd(162, 94)
162 = 1 x 94 + 68 gcd(94, 68)
94 = 1 x 68 + 26 gcd(68, 26)
68 = 2 x 26 + 16 gcd(26, 16)
26 = 1 x 16 + 10 gcd(16, 10)
16 = 1 x 10 + 6 gcd(10, 6)
10 = 1 x 6 + 4 gcd(6, 4)
6 = 1 x 4 + 2 gcd(4, 2)
4 = 2 x 2 + 0 gcd(2, 0)[一直到余数=0,这里结果为2]
模运算
a模n:a除以n所得的余数。
如果,则n|a。
(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 = [a mod n × b mod n] mod n
乘法逆
a的乘法逆元:与a相乘得到单位元的值。
群、环、域
群
如果群满足5交换律,称为交换群,即阿贝尔群。
求幂运算为重复运用群中的运算。
环{R,+,×}一个有两个二元运算的集合。a封闭率b结合律c分配率。
乘法交d换律和乘法e单位元。f无零因子:如果R中有元素a、b,且ab=0,则必有a=0或b=0。
域,整环,满足12345+abcdef,
存在乘法逆元,
有限域
有限域的阶(元素的个数)必须是一个素数的幂,n为正整数。阶为的有限域一把记为,n=1,GF(p),与n>1时有着不同的结构。
Galois fields(伽罗瓦域)
- –GF(p) ( for n=1)
- – (for p=2 )
GF(p)是整数集合{0,1, … , p-1} (整数集合) ,运算是模p的算术运算
如果a和b互素,则b有模a的乘法逆元。【注意:互素是前提】
即如果gcd(a,b)=1,那么b有模a的乘法逆元。对于b
(ax+by) mod a = [ax mod a + by moda ] mod a =by mod 1 ,因此用扩展欧几里得算法。 不仅计算出最大公因子d,还应该计算出另外两个整数x,y,它们满足如下方程: (其中,x和y具有相反的正负号。) 递推公式:和扩展的欧几里得算法及求乘法逆元
余数 | 公式 | x,y | 满足 |
---|---|---|---|
对于求乘法逆的例子,由于要求a,b为素数,最后的结果一般如下:
待处理余数 | 公式 | x | y |
---|---|---|---|
d=1 | ✔️ |
对于任意的n,如果运用扩展欧几里得算法可以用于求取内的乘法逆元。如果运用扩展欧几里得算法于方程nx+by=d,并且得到d=1,则在内有