欧拉定理学习笔记
费马小定理
\(a, p \in\mathbb{Z_+}\), \(p\) 为质数,\(\gcd(a,p) = 1\)。
定理: \(a^{p-1}\equiv 1 \pmod p\) 。
证明:
考虑下面两个整数集合:
\(A\) 中很明显每个数对 \(p\) 取余各不相同,且为 \(1\) 到 \(p-1\) 。
假设 \(B\) 中存在两个数 \(y_0=ax_0, y_1=ax_1\) 满足:
则会有:
\(\because \gcd(a,p)=1\),所以我们有:
但根据定义可知,\(x_0,x_1 \in A\),而 \(A\) 中不存在两个数对 \(p\) 取余相同。矛盾!
故假设不成立,\(B\) 中任意两个数对 \(p\) 取余不相同。
又 \(\because \gcd(a,p)=1\) 且 \(\forall x \in A,\gcd(x,p)=1\)。
\(\therefore\) \(B\) 中不存在 \(y\) 使得 \(y \equiv 0 \pmod p\)。
不难发现,在模 \(p\) 意义下 \(A\) 与 \(B\) 其实是等价的。
现在把 \(A\) 中的数和 \(B\) 中的数各自相乘,得到:
\(\because\) \((p-1)!\) 与 \(p\) 互质。\(\therefore\) 可以把两边同时除以 \((p-1)!\) 得到:
得证。
欧拉定理
\(a, p \in\mathbb{Z_+}\), \(\gcd(a,p) = 1\)。
定理: \(a^{\varphi(p)}\equiv 1 \pmod p\) 。
证明:
考虑下面两个整数集合:
根据欧拉函数的定义可知,\(|A|=|B|=\varphi(p)\)。
\(A\) 中很明显每个数对 \(p\) 取余各不相同。
假设 \(B\) 中存在两个数 \(y_0=ax_0, y_1=ax_1\) 满足:
则会有:
\(\because \gcd(a,p)=1\),所以我们有:
但根据定义可知,\(x_0,x_1 \in A\),而 \(A\) 中不存在两个数对 \(p\) 取余相同。矛盾!
故假设不成立,\(B\) 中任意两个数对 \(p\) 取余不相同。
又 \(\because \gcd(a,p)=1\) 且 \(\forall x \in A,\gcd(x,p)=1\)。
\(\therefore\) \(B\) 中不存在 \(y\) 使得 \(y \equiv 0 \pmod p\)。
不难发现,在模 \(p\) 意义下 \(A\) 与 \(B\) 其实是等价的。
现在把 \(A\) 中的数和 \(B\) 中的数各自相乘,得到:
\(\because\) \(\prod_{x\in A}x\) 与 \(p\) 互质。\(\therefore\) 可以把两边同时除以 \(\prod_{x\in A}x\) 得到:
得证。
扩展欧拉定理
根据欧拉定理,如果 \(\gcd(a,m)=1\),则 \(a^b \equiv a^{b \bmod \varphi(m)} \pmod m\)。
而扩展欧拉定理则说,如果 \(\gcd(a,m) \not = 1\) 时,有:
证明 oi-wiki 上有。
这样我们就能够快速计算 \(a^b \bmod m\) 这一类问题,只用 \(O(\log m)\) 的时间,而不是快速幂 \(O(\log b)\)。
结论
结论1: 若最小的 \(x \le \varphi(n)\) 且 \(a^x\equiv 1 \pmod p(\gcd(a,p)=1)\),则 \(x|\varphi(p)\)。
证明:
反证法。
设 \(\varphi(n)=gx+r(1 \le r < x)\),则 \(a^{gx+r}\equiv 1 \pmod p\)。
所以 \(a^{r} \equiv 1 \pmod p\),而 \(r < x\),与 \(x\) 最小性矛盾,所以结论成立。
练习
题目1: 给定 \(P,A \le 10^8\),求出 \(\frac{1}{P}\) 在 \(A\) 进制小数下的循环节位数(如果是纯循环小数才求,否则输出 -1)(金老师原创)
思路:
设答案为 \(L\),我们会得到 \(A^L \equiv 1\pmod p\)。
因为我们去模拟除法就会发现出现循环节意味着出现 \(1\)。
首先,若 \(A,P\) 不互质就无解。
否则,输出最小的 \(L\) 满足 \(A^L \equiv 1 \pmod p\)。根据结论,\(L| \varphi(p)\),枚举即可。
题目2: 求证:\(n \ge 1\) 时,\(2^n \not\equiv 1 \pmod p\)。(《具体数学》第四章 题46)
证明:
考虑 \(n\) 的最小素因子。
不妨设 \(n=pq\),其中 \(p\) 是 \(n\) 的最小素因子。
如果 \(p=2\),结论显然成立。
反证法,假设存在 \(n\) 使得 \(2^n \equiv 1 \pmod p\)。
我们在模 \(p\) 的意义下看一下上式:\((2^p)^q \equiv 1 \pmod p\)。
根据费马小定理,\(2^{p-1}\equiv 1 \pmod p\)。
所以我们可以得到:\((2^p)^q\equiv 2^q \equiv 1 \pmod p\)。
根据之前欧拉定理的结论,我们知道必然有 \(p-1|q\)。
而 \(q|n\),所以 \(p-1|n\)。
说明 \(p-1\) 是比 \(p\) 更小的 \(n\) 的因子,与 \(p\) 的最小性矛盾!
所以命题得证。
题目3: 给定 \(b, p, n\),求 \(1 \sim n\) 中有多少数 \(x\) 满足 \(x^{x!} \equiv b \pmod p\)。\(b,p\le 10^8,n \le 10^{18}\)
思路:
如果 \(x < \varphi(p)\),我们可以直接枚举检验,复杂度 \(O(p)\)。
否则,\(x^{x!}\equiv x^{x! \bmod \varphi(p)+\varphi(p)}\),又因为 \(x \le \varphi(p)\),所以 \(x! \bmod \varphi(p)=0\)。
所以 \(x^{\varphi(p)} \equiv b \pmod p\),我们枚举 \(p\) 的完全剩余系看看 \(x\) 模 \(p\) 余几时是可以的,然后计算一下 \(n\) 以内这样子的数的个数即可。