ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

欧拉函数与欧拉定理

2021-11-14 10:33:44  阅读:178  来源: 互联网

标签:prime 函数 定理 varphi times 互质 质数 欧拉


欧拉函数

定义

我们定义 \(\varphi (x)\) 为 小于 \(x\) 的正整数中与 \(x\)
互质的数的个数,称作欧拉函数。数学方式表达就是

\[\varphi(x) = \sum_{i < x} [i \bot x] \]

但需要注意,我们定义 \(\varphi(1) = 1\) 。

性质

  1. 若 \(x\) 为质数,\(\varphi(x) = x - 1\) 。

    证明:这个很显然了,因为除了质数本身的数都与它互质。

  2. 若 \(x = p^k\) ( \(p\) 为质数, \(x\)
    为单个质数的整数幂),则 \(\varphi(x) = (p - 1) \times p ^ {k - 1}\) 。

    证明:不难发现所有 \(p\) 的倍数都与 \(x\)
    不互质,其他所有数都与它互质。

    \(p\) 的倍数刚好有 \(p^{k-1}\) 个(包括了 \(x\) 本身)。

    那么就有 \(\varphi(x) = p^k - p^{k-1} = (p - 1) \times p^{k- 1}\) 。

  3. 若 \(p, q\) 互质,则有 \(\varphi(p \times q) = \varphi(p) \times \varphi(q)\) ,也就是欧拉函数是个积性函数。

    证明 :

    如果 \(a\) 与 \(p\) 互质 \((a<p)\) , \(b\) 与 \(q\)
    互质 \((b<q)\) , \(c\) 与 \(pq\) 互质 \((c<pq)\) ,则
    \(c\) 与数对 \((a,b)\) 是一一对应关系。由于 \(a\) 的值有
    \(\varphi (p)\) 种可能, \(b\) 的值有 \(\varphi(q)\)
    种可能,则数对 \((a,b)\) 有 \(φ(p)φ(q)\) 种可能,而 \(c\)
    的值有 \(φ(pq)\) 种可能,所以 \(φ(pq)\) 就等于 \(φ(p)φ(q)\)

    具体来说这一条需要 中国剩余定理 以及 完全剩余系
    才能证明,感性理解一下它的思路吧。

  4. 对于一个正整数 \(x\) 的质数幂分解 \(\displaystyle x = {p_1}^{k_1} \times {p_2}^{k_2} \times \cdots \times {p_{n} }^{k_n} = \prod _{i=1}^{n} {p_i}^{k_i}\) 。

    \(\displaystyle \varphi(x) = x \times (1 - \frac{1}{p_1}) \times (1 - \frac{1}{p_2}) \times \cdots \times (1 - \frac{1}{p_n}) = x\prod_{i=1}^{n} (1-\frac{1}{p_i})\)

    证明:

    我们考虑用前几条定理一起来证明。

    \(\begin{aligned} \varphi(x) &= \prod_{i=1}^{n} \varphi(p_i^{k_i}) \\ &= \prod_{i=1}^{n} (p_i-1)\times {p_i}^{k_i-1}\\ &=\prod_{i=1}^{n} {p_i}^{k_i} \times(1-\frac{1}{p_i})\\ &=x \prod_{i=1}^{n} (1-\frac{1}{p_i}) \end{aligned}\)

  5. 若 \(p\) 为 \(x\) 的约数( \(p\) 为质数, \(x\) 为任意正整数),我们有 \(\varphi(x \times p) = \varphi(x) \times p\) 。

    证明:

    我们利用之前的第 \(4\) 个性质来证明就行了。

    不难发现 \(\displaystyle \prod _{i=1}^{n} (1 - \frac{1}{p_i})\) 是不会变的,前面的那个 \(x\) 会变成 \(x \times p\) 。

    所以乘 \(p\) 就行了。

  6. 若 \(p\) 不是 \(x\) 的约数( \(p\) 为质数, \(x\)
    为任意正整数),我们有 \(\varphi(x \times p) = \varphi(x) \times (p - 1)\) 。

    证明 :\(p, x\) 互质,由于 \(\varphi\) 积性直接得到。

求欧拉函数

求解单个欧拉函数

我们考虑质因数分解,然后直接利用之前的性质 \(4\) 来求解。

快速分解的话可以用 \(PollardRho\) 算法。

求解一系列欧拉函数

首先需要学习 线性筛,我们将其改一些地方。

质数 \(p\) 的 \(\varphi(p) = p-1\) 。

对于枚举一个数 \(i\) 和另外一个质数 \(p\) 的积 \(x\) 。

我们在线性筛,把合数筛掉会分两种情况。

  1. \(p\) 不是 \(i\) 的一个约数,由于性质 \(5\) 就有
    \(\varphi(x) = \varphi(i) \times (p - 1)\) 。
  2. \(p\) 是 \(i\) 的一个约数,此时我们会跳出循环,由于性质 \(6\)
    有 \(\varphi(x) = \varphi(i) \times p\) 。

代码实现

bitset<N> is_prime; int prime[N], phi[N], cnt = 0;
void Init(int maxn) {
    is_prime.set(); is_prime[0] = is_prime[1] = false; phi[1] = 1;
    For (i, 2, maxn) {
        if (is_prime[i]) phi[i] = i - 1, prime[++ cnt] = i;
        For (j, 1, cnt) {
            int res = i * prime[j];
            if (res > maxn) break;
            is_prime[res] = false;
            if (i % prime[j]) phi[res] = phi[i] * (prime[j] - 1);
            else { phi[res] = phi[i] * prime[j]; break; }
        }
    }
}

欧拉定理

若正整数 \(a\) 与 \(m\) 互质,则

\(a^{\varphi(m)} \equiv 1\pmod m\)

扩展欧拉定理

\(a^b\equiv \begin{cases} a^{b \bmod \varphi(p)} & a \bot p\\ a^b & a \not \bot p,b<\varphi(p)\\ a^{b \bmod \varphi(p) + \varphi(p)} & a \not \bot p,b\geq\varphi(p) \end{cases} \pmod p\)

证明看 这里,有点难证,记结论吧。

这个常常可以用于降幂这种操作。

标签:prime,函数,定理,varphi,times,互质,质数,欧拉
来源: https://www.cnblogs.com/orzz/p/15550914.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有