群:非空集合 G 上定义了一种二元运算,满足封闭性、结合 律、单位元、逆元。
环:非空集合 R 上定义了加法和乘法,在加法下构成交换 群,满足乘法结合律、分配律。
域:非零元素都可逆的满足交换律的环。(也就是交换幺环)
循环群:指群可以由一个元素生成:G = x,x2,x3...。
阶:满足 xd = 1 的最小正整数 d。记为 ord(x)。xm = 1 当 且仅当 ord(x)|m。
模素数 p 的剩余类构成一个有限域。 模 m 意义下与 m 互质的元素组成缩系,大小为 ϕ(m)。
原根:能生成缩系的元素,即 xi 两两不同(0 ≤i < ϕ(m))的 x。原根不一定存在。事实上,当且仅当 m = 2,4,pk,2∗pk 时模 m 缩系的原根存在。p 是任意奇质数。
Fact: 设 a 的阶是 m,d|m,则的阶是 。
Fact: 设 a 的阶是 m,b 的阶是 n,则必存在一个数,阶是 lcm(n,m)。
先考虑 n,m 互质,设 ab 的阶是 e,则有 1 = = , 于是 n|me,于是 n|e。同理有 m|e,于是 nm|e。而 = 1, 于是 e|nm,于是 e = nm。
如果 n,m 不互质,只要取 互质且(比如把每个质因子分到 n′,m′ 中),此时 阶为 n′,阶为 m′。乘起来即可。
这样就说明一定存在一个数,阶是所有元素的阶的倍数 d。 由 (这样说其实是不准确的,可以这样考虑,所有元素的阶都是p-1的因子,否则阶取p-1有更小值)知 d|p−1,而 = 1 有 p−1 个不同的根。由于是 域,d 至少为 p−1,于是 d = p−1(根据mod质数p下域的性质一个n次多项式最多有n个零点,证明考虑将这个n次多项式因式分解,然后又因为是质数所以有逆元)。即(不包括0)的乘法群是个循环 群,即原根存在。
Fact:n 个元素的循环群的生成元个数为 。 取一个生成元 g,考虑的阶 e。设 ,有
,于是 。 而若有 则 n|re,于是,于是 。 当且仅当 e = n 即 gcd(n,r) = 1 时 也是生成元,于是恰 有 个。一般地,阶为 d|n 的元素恰有个 (即求有多少 r 使 )。 如果原根存在,即缩系是大小为 的循环群,那么原根 个数为 。特别地,模质数域的原根个数为。 最小的原根一般不大,可以暴力枚举判断。求出一个原根 g 后,全部原根的集合就是 {|gcd(n,r) = 1}。
记为勒让德符号,p 是一个奇素数。
表示 a 是模 p 域下的二次剩余,−1 表示是二次非剩余。
证明:
考虑a只有两种形式:
因为在mod p不存在,这个可以用反证法证明:假设存在,,那么。
与原根的性质矛盾。
,所以
所以
必要性显然,所以我们可以直接用来判定a是属于哪一种情况。
证明还不会,在网上暂时找不到。
现在讲讲求解二次剩余的两种方法:
1.Cipolla 算法
要求 的解(满足)。 随机一个 a 使得 是二次非剩余,即 。设。可证 构成一个域。 构造得二次剩余的解为 。
证明:
并且 不存在 项:设 ,则有。若 则有 ,左边没有二次剩余而右边有。矛盾。
2.绿色夹克衫算法
这个算法十分的巧妙,可以均摊log,与上者不同,这个是直接算的。具体可以看一看他的blog。
找时间笔者彻底弄懂了再来补。