不妨设 $a > b$
-我们发现如果 b 是 a 的约数,那么 b 就是二者的最大公约数。
+我们发现如果 $b$ 是 $a$ 的约数,那么 $b$ 就是二者的最大公约数。
下面讨论不能整除的情况, $a = b \times q + r$,其中 $r < b$。
不难证明,$\gcd(a, b) = \gcd(b, r)$,这里两个数的大小是不会增大的,我们得到了关于两个数的最大公约数的一个递归求法。
设 $a = p_{a_1}^{k_{a_1}}p_{a_2}^{k_{a_2}} \cdots p_{a_s}^{k_{a_s}}$, $b = p_{b_1}^{k_{b_1}}p_{b_2}^{k_{b_2}} \cdots p_{b_s}^{k_{b_s}}$
-我们发现,对于 a 和 b 的情况,二者的最大公约数等于
+我们发现,对于 $a$ 和 $b$ 的情况,二者的最大公约数等于
$$
p_1^{k_{\min(a_1, b_1)}}p_2^{k_{\min(a_2, b_2)}} \cdots p_s^{k_{\min(a_s, b_s)}}
生成子群:$a \in S$ 的生成子群 $<a> = \{a^{(k)}, k \geq 1 \}$ ,$a$ 是 $< a >$ 的生成元
-阶:群 $S$ 中 $a$ 的阶是满足 $a^r=e$
-
-的最小的 $r$, 符号 $ \operatorname{ord}(a)$ , 有 $ \operatorname{ord}(a) = |< a >|$,显然成立。
+阶:群 $S$ 中 $a$ 的阶是满足 $a^r=e$ 的最小的 $r$, 符号 $ \operatorname{ord}(a) $ , 有 $ \operatorname{ord}(a) = |< a >| $,显然成立。
考虑群 $Z_n^ \times =\{[a], n \in Z_n : \gcd(a, n) = 1\}, |Z_n^ \times | = \phi(n)$
### [原根](/math/primitive-root)
-$g$ 满足 $ \operatorname{ord}_n(g) = |Z_n^ \times | = \phi(n)$ ,对于质数 $p$,也就是说 $g^i \bmod p, 0 \leq i < p$ 结果互不相同.
+$g$ 满足 $ \operatorname{ord}_n(g) = |Z_n^ \times | = \phi(n) $ ,对于质数 $p$,也就是说 $g^i \bmod p, 0 \leq i < p$ 结果互不相同.
模 $n$ 有原根的充要条件 : $n = 2, 4, p^e, 2 \times p^e$
对于质数 $p=qn+1, (n=2^m)$ , 原根 $g$ 满足 $g^{qn} \equiv 1 (\bmod p)$, 将 $g_n=g^p(\bmod q)$ 看做 $\omega_n$ 的等价,择其满足相似的性质,比如 $g_n^n \equiv 1 (\bmod p), g_n^{n/2} \equiv -1 (\bmod p)$
-然后因为这里涉及到数论变化,所以这里的 $N$(为了区分 FFT 中的 n,我们把这里的 n 称为 $N$)可以比 FFT 中的 n 大,但是只要把 $\frac{qN}{n}$
-
-看做这里的 $q$ 就行了,能够避免大小问题。。。
+然后因为这里涉及到数论变化,所以这里的 $N$(为了区分 FFT 中的 n,我们把这里的 n 称为 $N$)可以比 FFT 中的 n 大,但是只要把 $\frac{qN}{n}$ 看做这里的 $q$ 就行了,能够避免大小问题。。。
常见的有
我们说,如果存在一个整数 $k$,使得 $a = kd$,则称 $d$ 整除 $a$,记做 $d | a$,称 $a$ 是 $d$ 的倍数,如果 $d > 0$,称 $d$ 是 $a$ 的约数。特别地,任何整数都整除 $0$。
-显然大于 $1$ 的正整数 $a$ 可以被 $1$ 和 $a$整除,如果除此之外 $a$ 没有其他的约数,则称 $a$ 是素数,又称质数。任何一个大于 $1$ 的整数如果不是素数,也就是有其他约数,就称为是合数。$1$ 既不是合数也不是素数。
+显然大于 $1$ 的正整数 $a$ 可以被 $1$ 和 $a$ 整除,如果除此之外 $a$ 没有其他的约数,则称 $a$ 是素数,又称质数。任何一个大于 $1$ 的整数如果不是素数,也就是有其他约数,就称为是合数。$1$ 既不是合数也不是素数。
## 素数判定
这样做是十分稳妥了,但是真的有必要每个数都去判断吗?
-很容易发现这样一个事实:如果 $x$ 是 $a$ 的约数,那么 $a / x$ 也是 $a$ 的约数。
+很容易发现这样一个事实:如果 $x$ 是 $a$ 的约数,那么 $\frac{a}{x}$ 也是 $a$ 的约数。
-这个结论告诉我们,对于每一对 $(x, a / x)$,只需要检验其中的一个就好了。为了方便起见,我们之考察每一对里面小的那个数。不难发现,所有这些较小数就是 $[1 .. \sqrt(a)]$ 这个区间里的数。
+这个结论告诉我们,对于每一对 $(x, \frac{a}{x} )$,只需要检验其中的一个就好了。为了方便起见,我们之考察每一对里面小的那个数。不难发现,所有这些较小数就是 $[1 \cdots \sqrt(a)]$ 这个区间里的数。
由于 $1$ 肯定是约数,所以不检验它。
那么,如何来求解反素数呢?
-首先,既然要求因子数,我首先想到的就是素因子分解。把 n 分解成 $n=p_{1}^{k_{1}}p_{2}^{k_{2}} \cdots p_{n}^{k_{n}}$
-
-的形式,其中 p 是素数,k 为他的指数。这样的话总因子个数就是 $(k_1+1) \times (k_2+1) \times (k_3+1) \cdots \times (k_n+1)$。
+首先,既然要求因子数,我首先想到的就是素因子分解。把 $n$ 分解成 $n=p_{1}^{k_{1}}p_{2}^{k_{2}} \cdots p_{n}^{k_{n}}$ 的形式,其中 $p$ 是素数,$k$ 为他的指数。这样的话总因子个数就是 $(k_1+1) \times (k_2+1) \times (k_3+1) \cdots \times (k_n+1)$。
但是显然质因子分解的复杂度是很高的,并且前一个数的结果不能被后面利用。所以要换个方法。
我们来观察一下反素数的特点。
-1. 反素数肯定是从 2 开始的连续素数的幂次形式的乘积。
+1. 反素数肯定是从 $2$ 开始的连续素数的幂次形式的乘积。
2. 数值小的素数的幂次大于等于数值大的素数,即 $n=p_{1}^{k_{1}}p_{2}^{k_{2}} \cdots p_{n}^{k_{n}}$ 中,有 $k1 \geq k2 \geq k3 \geq \cdots \geq k_n$
另外还有两个问题,
-1. 对于给定的 n,要枚举到哪一个素数呢?
+1. 对于给定的 $n$,要枚举到哪一个素数呢?
最极端的情况大不了就是 $n=p_{1}*p_{2} \cdots p_{n}$ ,所以只要连续素数连乘到刚好小于等于 $n$ 就可以的呢。再大了,连全都一次幂,都用不了,当然就是用不到的啦!