1.gcd与exgcd
欧几里得算法:
\(gcd(a, b) = gcd(b, a \bmod b)\)
\(code:\)
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
扩展欧几里得算法:
\(ax + by = gcd(a, b)(a > 0, b > 0)\)
若\(a < 0\), 可把符号转移到\(x'\)中,令\(x = x'\)。
令\(d=gcd(a,b)\),对于一组不定方程\(ax+by=c\),有解当且仅当\(d | c\)。
对于这组不定方程,我们可以先求出\(ax_0 + by_0 = d\),得到一组解\(x_0,y_0\),同时乘上\(\frac {c} {d}\),即得到一组原方程的解。\(exgcd\)函数返回的值,是\(gcd(a,b)\)。
\(code:\)
int exgcd(int a, int b, int &x, int &y) {
if(b == 0) {
x = 1;
y = 0;
return a;
}
int gcd = exgcd(b, a % b, x, y), t;
t = x;
x = y;
y = t - a / b * y;
return gcd;
}
对于这组不定方程的通解,可以表示为:
\(x = x \cdot \frac {c}{d} + t \cdot \frac {b}{d}, y = y \cdot \frac {c}{d} - t \cdot \frac {a}{d}.\)
其中\(t\)的取值在整数集合里。
2.欧拉函数及欧拉定理
欧拉函数
欧拉函数\(( \phi (n))\):表示\([1,n-1]\)中与\(n\)互质的整数的个数。
一些定理
\(1.\) 若\(n\)为质数,则\(\phi(n) = n - 1\).
证明:显然。
\(2.\)若\(n\)为一个质数\(p\)的幂次方,表示为\(p ^ a\),则\(\phi(p^a) = (p-1) \cdot p^{a-1}\).
证明:
小于等于\(p^a\)的正整数一共有\(p^a - 1\)个,对于那些可以被\(p\)整除的数可以表示为\(p\cdot t\),其中\(t=(1,2,\cdots, p^{a-1}-1 )\),共有\(p^{a-1}-1\)个数。所以不能被整除的数的个数,即\(\phi(p^a)=p^a-1-(p^{a-1}-1)=p^a-p^{a-1} = (p-1) \cdot p^{a-1}.\)
\(3.\)若\(a,b\)互质,则\(\phi(a \cdot b)= \phi(a) \cdot \phi(b)\).
证明:
根据\(\phi(n)\)的通项公式易证。
\(4.\)若\(a|b\),则$ \phi(a \cdot b)=a \cdot \phi(b)$.
证明:
根据\(\phi(n)\)的通项公式易证。
欧拉函数的通项公式
设\(n =\prod _{i=1}^{k}p_i^{ai}\)为\(n\)的质数幂乘积,则\(\phi(n) = n \cdot \prod_{i = 1}^{k}(1- \frac{1}{p_i}).\)
证明:
各质数幂之间显然互质,根据上面的定理,即可表示出:
\(\phi(n) = \phi(p_{1}^{a_1})\times \phi(p_{2}^{a_2})\times\phi(p_{3}^{a_3})\times \cdots \times \phi(p_{k}^{a_k})\)
\(=(p_{1}^{a_1} - p_{1}^{a_1 - 1}) \times (p_{2}^{a_2} - p_{2}^{a_2 - 1}) \times(p_{3}^{a_3} - p_{3}^{a_3 - 1}) \times \cdots \times(p_{k}^{a_k} - p_{k}^{a_k - 1})\)
\(= p_1^{a_1}\times p_2^{a_2}\times p_3^{a_3}\times \cdots \times p_{k}^{a_k}\times (1-\frac{1}{p_1})\times (1-\frac{1}{p_2})\times(1-\frac{1}{p_3})\times \cdots \times (1-\frac{1}{p_k}).\)
$ = n \times (1-\frac{1}{p_1})\times (1-\frac{1}{p_2})\times(1-\frac{1}{p_3})\times \cdots \times (1-\frac{1}{p_k}).$
欧拉定理
若\(a\)与\(p\)互质,则\(a^{\phi{(p)}} \equiv 1(\bmod p).\)
一些定理
\(1.\)若\(b,p\)互质,则\(a^b \bmod p = a^{b \bmod \phi(p)} \bmod p.\)
证明:
由欧拉定理,则:
\(a^b \bmod p =\frac{a^b}{a^{\phi(p)}} \bmod p = a^{b \bmod \phi(p)} \bmod p.\)