Login to join training plan
欧拉函数
表示 中与 互质的数。
欧拉函数是一个积性函数,但不是完全积性函数。
- 积性函数:,且当 时,。
- 完全积性函数:,且 。
性质
- $\varphi(n) = n \times \prod\limits_{p \mid n, p\ is\ a\ prime} \dfrac {p-1}p$
- $\sum\limits_{\gcd(i, n) = 1} i = \dfrac{\varphi(n) \times n}2$
欧拉定理
对于一个模数 , 可以不是质数,但 与 互质,有 。
- 求逆元:。
- 降低指数:。
扩展欧拉定理: 可以不是质数, 可以不与 互质。
$$k^a \equiv \left\{\begin{matrix} k^a & a < \varphi(p)\\ k^{a \mod \varphi(p) + \varphi(p)} & a \ge \varphi(p) \end{matrix}\right. \pmod p $$求解
- 求一个 :
$\varphi(n) = n \times \prod\limits_{p \mid n, p\ is\ a\ prime} \dfrac {p-1}p$
- 求 :
线性筛法。
int p[N];
bool st[N];
int phi[N];
void prime(int n)
{
phi[1] = 1;
for (int i = 2; i <= n; i ++ )
{
if (!st[i]) p[ ++ cnt] = i, phi[i] = i - 1;
for (int j = 1; p[j] <= n / i; j ++ )
{
st[p[j] * i] = 1;
if (i % p[j]) phi[i * p[j]] = phi[i] * p[j];
else
{
phi[i * p[j]] = phi[i] * (p[j] - 1);
break;
}
}
}
}
除数函数
。
时,含义为约数个数和。
时,含义为约数和。
除数函数全部是积性函数,但不是完全积性函数。
莫比乌斯函数
https://oi-wiki.org//math/number-theory/mobius/
https://www.luogu.com.cn/problem/P3455
欧几里得算法
求 ,辗转相除法。
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
扩展欧几里得算法
求二元一次方程 的解。
裴蜀定理:有解当且仅当 。
如果 是一组解,那么 也是一组解。
如何得到一组任意解?
$a_2 = b_1,\ a_2 = a_1 \bmod b_1 = a_1 - \left \lfloor \dfrac {a_1}{b_1} \right \rfloor \times b_1$
$b_1x_2 + \left(a_1 - \left \lfloor \dfrac {a_1}{b_1} \right \rfloor \times b_1 \times y_2 \right)$
$b_1x_2 + a_1y_2 - a_1 - \left \lfloor \dfrac {a_1}{b_1} \right \rfloor \times b_1 \times y_2$
求逆元
求 ,使得 。
也就是求 。
于是就转化成了二元一次方程,求的是 在 区间内的一个解。
这个方法对 的素性没有要求。
筛质数
- 埃氏筛:。
从小到大枚举每一个数字,如果之前被筛掉了,那么不是质数,否则就是质数。
无论当前的 是不是质数,枚举已经筛出来的每一个质数 ,把 筛掉,直到 大于上街 或者质数枚举完毕结束。
- 线性筛:。
对于每一个数字 ,仅在 的时候被筛掉,其中 是 的最小质因数。
在枚举 的时候,加一句判断,如果 ,那说明 的最小质因子为 ,之后再枚举 就不满足要求了,直接 break
。
int p[N];
bool st[N];
void prime(int n)
{
for (int i = 2; i <= n; i ++ )
{
if (!st[i]) p[ ++ cnt] = i;
for (int j = 1; p[j] <= n / i; j ++ )
{
st[p[j] * i] = 1;
if (i % p[j] == 0) break;
}
}
}
中国剩余定理
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
给定 ,其中 两两互质,求 ,满足:
$$\left\{\begin{matrix}x \equiv a_1 \pmod {p_1} \\x \equiv a_2 \pmod {p_2} \\\dots \dots \dots \dots \\x \equiv a_n \pmod {p_n} \end{matrix}\right. $$定义一个 数组,使得 $b_i = \dfrac P {p_i} \times a_i \times \left( \dfrac P {p_i} \right) ^{p_i-2}$。
EXCRT
如果 不两两互质,合并方程。最终得到:
$$x \equiv A \bmod P \Longleftrightarrow x = A + kP(k \in \mathbb{Z} ) $$这样就能将两个式子 和 合并成了 ,其中 , 是原方程组的任意一个特解。
使用扩展欧几里得算法求解特解。
如果两两互质,可以直接求逆元得到 。
- Enrollees
- 5
- Created By