今天我刷题了吗
  • 2U's GitBook
  • 我的模板
    • I/O 及其他
      • 快速读写
      • 关闭同步流
      • 文件重定向
      • 随机数
      • 运行时间
      • Lambda
      • 万能头文件
    • 字符串
      • 字符串分割
      • KMP 算法
      • Manacher 算法
      • AC 自动机
      • 高精度
    • 数学
      • 快速幂
      • 矩阵快速幂
      • 筛法
      • 欧拉函数
      • Polya 定理
      • 逆元
      • 组合数
    • 图论
      • Dijkstra 算法
      • SPFA 算法
      • Kruskal 算法
      • Prim 算法
      • 倍增
      • 离线 Tarjan 算法
      • Tarjan 算法
      • Hungary 算法
      • A* 算法
      • EK 算法
      • Dinic 算法
    • 数据结构
      • 线段树
      • 树状数组
      • 可持久化数组
      • 主席树
      • 树堆
      • 无旋树堆
      • 伸展树
      • 树套树
      • 树链剖分
      • 点分治
      • 动态树
  • 我的题单
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 我的模板
  2. 数学

欧拉函数

欧拉函数

欧拉函数(Euler's totient function),即 φ(n)\varphi(n)φ(n) ,表示的是小于等于 nnn 和 nnn 互质的数的个数。

比如说 φ(1)=1\varphi(1) = 1φ(1)=1 。

当 nnn 是质数的时候,显然有 φ(n)=n−1\varphi(n) = n - 1φ(n)=n−1 。

利用唯一分解定理,我们可以把一个整数唯一地分解为质数幂次的乘积。

设 n=∏i=1npikin = \prod_{i=1}^{n}p_i^{k_i}n=∏i=1n​piki​​ ,其中 pip_ipi​ 是质数,那么 φ(n)=n×∏i=1spi−1pi\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}φ(n)=n×∏i=1s​pi​pi​−1​ 。

欧拉定理

若 gcd⁡(a,m)=1\gcd(a, m) = 1gcd(a,m)=1 ,则 aφ(m)≡1(modm)a^{\varphi(m)} \equiv 1 \pmod{m}aφ(m)≡1(modm) 。

费马小定理

若 ppp 为素数, gcd⁡(a,p)=1\gcd(a, p) = 1gcd(a,p)=1 ,则 ap−1≡1(modp)a^{p - 1} \equiv 1 \pmod{p}ap−1≡1(modp) 。

威尔逊定理

(p−1)!≡−1(modp)(p-1)!\equiv-1\pmod{p}(p−1)!≡−1(modp)

若 ppp 为质数,则 ppp 可整除 (p−1)!+1(p-1)!+1(p−1)!+1 。

筛法求欧拉函数

void phi_table()
{
    for (int i = 1; i < maxn; i++) {
        phi[i] = i;
    }
    for (int i = 2; i < maxn; i++) {
        if (phi[i] == i) {
            for (int j = i; j < maxn; j += i) {
                phi[j] = phi[j] / i * (i - 1);
            }
        }
    }
}

Pollard Rho 算法求欧拉函数

ll get_phi(int n)
{
    ll res = 1;
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            n /= i;
            res *= i - 1;
            while (n % i == 0) {
                n /= i;
                res *= i;
            }
        }
    }
    if (n > 1) {
        res *= n - 1;
    }
    return res;
}
上一页筛法下一页Polya 定理

最后更新于4年前

这有帮助吗?