欧拉函数及欧拉定理&逆元学习笔记

欧拉函数及欧拉定理&逆元学习笔记

——by sunzz3183


欧拉函数

定义

\[\varphi (n)=\sum\limits_{i=1}^{n} [\gcd(n,i)=1] \]

根据容斥可得

\[\varphi(n)=n\prod_{i=1}^{k}(1-\frac{1}{p_i}) \]

所以可得以下代码

inline int euler(int x){
	int res=x;
	for(int i=2;i*i<=x;i++)
		if(!(x%i)){
			res=res/i*(i-1);
			while(!(x%i))x/=i;
		}
	if(x>1)res=res/x*(x-1);
	return res;
}

筛法

原理

\[\varphi(n)=n\prod_{i=1}^{k}(1-\frac{1}{p_i}) \]

所以:

  1. \(n\) 为质数的时候 \(\varphi (n)=n-1\)
  • \(d=\frac{n}{p}\) 其中 \(p\)\(n\) 的最小质因子。
  1. \(p\)\(d\) 的某个质因子时,则 \(\varphi (n)=\varphi (d)\times p\)

  2. \(p\)\(d\) 互质时,\(\varphi (n)=\varphi (d)\times \varphi (p)\)

所以,欧拉函数为积性函数(当 \(x\perp y\) 时, \(\varphi (xy)=\varphi (x)\times \varphi (y)\)

代码

int cnt,prime[M],phi[N],mu[N];
bool is_p[N];
void init(int n){
	phi[1]=mu[1]=1;
	for(int i=2;i<=n;i++){
		if(!is_p[i])prime[++cnt]=i,phi[i]=i-1,mu[i]=-1;
		for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
			is_p[i*prime[j]]=1;
			if(!(i%prime[j])){
				phi[i*prime[j]]=phi[i]*prime[j];
				mu[i*prime[j]]=0;
				break;
			}
			phi[i*prime[j]]=phi[i]*(prime[j]-1);
			mu[i*prime[j]]=-mu[i];
		}
	}
}

重要公式:

\((1)\)

\[\sum\limits_{d|n} \varphi (d)=n \]

证明:

\(f(n)=\sum\limits_{d|n} \varphi (d)\)

由筛法的原理1,2可知

\[\varphi (p^k)=\varphi (p)\times p^{k-1}=(p-1)\times p^{k-1}=p^k-p^{k-1} \]

对于

\[\sum\limits_{d|p^k} \varphi (d) \]

显然,\(d=\left \{ p^0,p^1,p^2,...,p^k\right \}\)。那么有

\[\begin{aligned} \\&=\sum\limits_{i=0}^k \varphi (p^i) \\&=(\sum\limits_{i=1}^k p^i-p^{i-1})+1 \\&=p^k-p^{k-1}+p^{k-1}-p^{k-2}+...+p-1+1 \\&=p^k \end{aligned}\]

\(\therefore f(p^k)=p^k\)

\(\because f(ab)=\sum\limits_{d|ab} \varphi (d)=(\sum\limits_{d|a} \varphi (d)) \times (\sum\limits_{d|b} \varphi (d))=f(a)\times f(b)\)

\(\therefore f(n)\)为积性函数。

\[\begin{aligned} \\&\therefore f(n) \\&=f(p_1^{c_1}\times p_2^{c_2}\times p_3^{c_3}\times ...\times p_k^{c_k}) \\&=f(p_1^{c_1})\times f(p_2^{c_2})\times f(p_3^{c_3})\times ...\times f(p_k^{c_k}) \\&= p_1^{c_1}\times p_2^{c_2}\times p_3^{c_3}\times ...\times p_k^{c_k} \\&=n \end{aligned}\]

\((2)\)

\[\begin{aligned} \\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} [\gcd(i,j)=1] \\&=\sum\limits_{i=1}^{n}(2\sum\limits_{j=1}^{i}[\gcd (i,j)=1])-1 \\&=2 \sum\limits_{i=1}^{n}\varphi (i)-1 \end{aligned}\]

可以使用前缀和,使得 \(O(1)\) 查询。

\((2.5)\)

\[\begin{aligned} \\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \gcd(i,j) \\&= \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{d|gcd(i,j)} \varphi (d) \\&= \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{d|i,d|j} \varphi (d) \\&= \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{d=1}^{min(n,m)} \varphi (d)[d|i][d|j] \\&=\sum\limits_{d=1}^{min(n,m)} \varphi (d) \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} [d|i][d|j] \\&=\sum\limits_{d=1}^{min(n,m)} \varphi (d) \left \lfloor \frac{n}{d} \right \rfloor \left \lfloor \frac{m}{d} \right \rfloor \end{aligned}\]

\((3)\)

莫比乌斯反演(拓展)

\[\begin{aligned} \\&\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m}[\gcd(i,j)==1] \\&= \sum\limits_{i=1}^{n} \sum\limits_{j=1}^{m} \sum\limits_{d|gcd(i,j)} \mu (d) \\&=\sum\limits_{i=1}^{n} \sum\limits_{d=1}^{min(i,m)} \mu (d)\left \lfloor \frac{min(i,m)}{d} \right \rfloor \\&=\sum\limits_{d=1}^{min(n,m)} \mu (d)\left \lfloor \frac{n}{d} \right \rfloor \left \lfloor \frac{m}{d} \right \rfloor \end{aligned}\]

费马小定理&欧拉定理&扩展欧拉定理

同余

定义

如果

\[d|(a-b) \]

则我们称

\[a\equiv b\pmod{d} \]

性质

1.反身性:\(a\equiv a \pmod{m}\)

2.对称性:若 \(a\equiv b \pmod{m}\),则 \(b\equiv a \pmod{m}\)

3.传递性:若 \(a\equiv b \pmod{m}\)\(b\equiv c \pmod{m}\),则 \(a\equiv c \pmod{m}\)

4.同余式相加:若 \(a\equiv b \pmod{m}\)\(c\equiv d \pmod{m}\),则 \(a\pm c\equiv b\pm d \pmod{m}\)

5.同余式相乘:若 \(a\equiv b \pmod{m}\)\(c\equiv d \pmod{m}\),则\(ac\equiv bd \pmod{m}\)

费马小定理

定义

对于一个整数 \(a\) 和 质数 \(p\),如果满足

\[a\perp p \]

则符合

\[a^{p-1}\equiv 1 \pmod{p} \]

欧拉定理

定义

费马小定理的广义。

对于两个整数 \(a\)\(m\),如果满足

\[a\perp m \]

则符合

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

逆元

定义

\[ab\equiv 1\bmod m \]

\(b\)\(a\)\(\bmod m\) 意义下的逆元,同时,\(a\) 也为 \(b\)\(\bmod m\) 意义下的逆元。

任意整数 \(a\)\(\bmod m\) 意义下的逆元记为 \(inv(a,m)\)

显然,逆元就是在 \(\bmod\) 某个数意义下的倒数,即

\[inv(a,m)=a^{-1} \bmod m \]

求法

  1. 费马小定理求法(\(p\in Prime,a\perp p\)

\[\begin{aligned} \\&\because a^{p-1}\equiv 1 \pmod{p} \\&\therefore a^{p-2}=\frac {1}{a}\pmod{p} \\&\therefore inv(a,p)=a^{p-2}\pmod{p} \end{aligned}\]

  1. 欧拉定理求法(\(a\perp m\)

\[\begin{aligned} \\&\because a^{\varphi(m)}\equiv 1 \pmod{m} \\&\therefore a^{\varphi(m)-1}=\frac {1}{a}\pmod{m} \\&\therefore inv(a,p)=a^{\varphi(m)-1}\pmod{m} \end{aligned}\]

  1. 线性求逆元(\(p\in Prime,a\perp p\)

对于所有的 \(i<p\),有一种线性求逆元(\(i^{-1}\))的方法。

因为 \(i<p\),所以可以用 \(i\) 表示 \(p\),即

\[p=ki+b \]

\[ik+b \equiv 0 \pmod{p} \]

等式两边同乘 \(i^{-1}\),得

\[k+bi^{-1} \equiv 0 \pmod{p} \]

移项,分离处 \(i^{-1}\),得

\[i^{-1} \equiv -kb^{-1} \pmod{p} \]

\[ \begin{aligned} \\&\because k=\left \lfloor p/i \right \rfloor,b=p\bmod i \\&\therefore i^{-1} \equiv -(p/i)(p\bmod i)^{-1} \pmod{p} \\&\therefore i^{-1} \equiv (p-p/i)(p\bmod i)^{-1} \pmod{p} \end{aligned} \]

因为 \((p\bmod i)^{-1}\) 已经处理好了

所以可以线性处理

代码

inv[1]=1;
for(int i=2;i<=n;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
  1. 线性求阶乘逆元

可以在组合数问题上发挥作用

显然

\[\frac{1}{(n-1)!}=n\cdot \frac{1}{n!} \]

所以

fac[0]=inv[0]=1;
for(int i=1;i<=n;i++)
	fac[i]=fac[i-1]*i%mod;
inv[n]=ksm(fac[n],mod-2);
for(int i=n;i>=1;i--)
	inv[i-1]=inv[i]*i%mod;

扩展欧拉定理

\[a^b\equiv \begin{cases} a^{b\mod{\varphi(m)}}&a\perp m \\a^b&\neg a\perp m,b<\varphi (m) \\a^{b\mod{\varphi (m)} +\varphi (m)}&\neg a\perp m,b\geq\varphi(m) \end{cases} \mod{m}\]

互质可以不要

\[a^b \equiv \begin{cases} a^b&b<\varphi (m)\\a^{b\mod{\varphi (m)} +\varphi (m)}&b\geq\varphi (m)\end{cases}\mod{m} \]

posted @ 2023-02-02 21:32  sunzz3183  阅读(52)  评论(0编辑  收藏  举报
Live2D