欧拉函数|(扩展)欧拉定理|欧拉反演

也许更好的阅读体验

欧拉函数

  • 定义
    欧拉函数是 小于等于 x的数中与x 互质 的数的 数目
    符号(varphi(x))
    互质 两个互质的数的最大公因数等于1,1与任何数互质

  • 通式
    (varphi(x)=xprod_{i=1}^n(1-frac{1}{p_i}))
    其中(p_i)(x)的质因子,(n)(x)的质因子个数


欧拉函数常用性质

  • (n)为质数,显然(varphi(n)=n-1)
    (egin{aligned}end{aligned})

  • 欧拉函数是积性函数
    积性函数: 对于任意 互质 的整数(a)(b)有性质(f(ab)=f(a)·f(b))的数论函数。
    (m,n)互质,(varphi(mn)=varphi(m)·varphi(n))
    (egin{aligned}end{aligned})

  • 如果(x=2n)((n)为奇数),(varphi(x)=varphi(n))(varphi(2n)=varphi(n))((n)为奇数)
    n为奇数时,n与2互质,(varphi(2)=1)
    (egin{aligned}end{aligned})

  • (p)为质数,则(varphi(p^k)=p^k-p^{k-1})
    因为与(p^k)不互质的只有(p)的倍数,而(p^k)(p)的倍数有(p^{k-1})
    (egin{aligned}end{aligned})

  • (x>2)时,(varphi(x))为偶数
    这一点需要了解更相减损术 即(gcd(n,x)=gcd(n,n-x))
    由该公式我们可以知道,所有与(n)互质的数都是成对出现的
    (egin{aligned}end{aligned})

  • 小于n的数中,与n互质的数的总和为(varphi(n)*n/2 (n>1))
    由上面的证明(更相减损术)我们知道,每一对与(n)互质的数的和为(n),共有(varphi(n)/2)
    (egin{aligned}end{aligned})

  • (n=sum_{d|n}varphi(d))(n)的因数(()包括(1)和它自己())的欧拉函数之和等于(n)
    这条性质的运用又叫 欧拉反演
    定义函数
    (egin{aligned}f(n)=sum_{d|n}varphi(d)end{aligned})

    • (f(n))为积性函数
      (egin{aligned}f(n)·f(m)=sum_{i|n}varphi(i)sum_{j|m}varphi(j)=sum_{i|n}sum_{j|m}varphi(i)·varphi(j)=sum_{i|n}sum_{j|m}varphi(i·j)=sum_{d|nm}varphi(d)=f(nm)end{aligned})

    (f(p^k)=varphi(1)+varphi(p)+varphi(p^2)+cdots+varphi(p^k)=1+(p-1)+(p^2-p)+cdots+(p^k-p^{k-1})=p^k)

    (n=p_1^{k_1} ·p_2^{k_2}· cdots·p_m^{k_m})

    (f(n)=f(p_1^{k_1})·f(p_2^{k_2})·cdots·f(p_m^{k_m})=p_1^{k_1} ·p_2^{k_2}· cdots·p_m^{k_m}=n)
    (egin{aligned}end{aligned})


欧拉定理

(a,m)互质,(a^{varphi(m)}≡1(mod m))

  • 证明

    • 剩余系 指对于某一个特定的正整数(n),一个整数集中的数(mod n)所得的余数域。
      • 完全剩余系(min Z+),若(r_0,r_1,...r_{m−1})(m)个整数,并且两两模(m)不同余,则(r_0,r_1,...r_{m−1})叫作模(m)的一个完全剩余系。
      • 缩系(A)(mod n)的剩余系,若任意(A)中两个元素相乘(mod n)后仍为(A)中的元素,则称(A)(mod n)的缩系
      • (a,m)互质,则(m)的一个缩系为
        ({x_1,x_2,x_3...x_{varphi(m)}})
        ({ax_1\%m,ax_2\%m,ax_3\%m...ax_{varphi(m)}\%m})也是(mod m)的缩系
        于是可以得到
        (sum_{i=1}^{varphi(m)}ax_iequiv sum_{i=1}^{varphi(m)}x_i (mod m))
        (a^{varphi(m)}sum_{i=1}^{varphi(m)}x_iequiv sum_{i=1}^{varphi(m)}x_i (mod m))
        (a^{varphi(m)}equiv 1 (mod m))
        • 而当(m)为质数时,(varphi(m)=m-1)
          (a^{(m-1)}≡1(mod m))
          这就是我们熟知的 费马小定理
  • 变式 (a,m)互质(a^b≡a^{b\%varphi(m)}(mod m))


扩展欧拉定理

(b>varphi(m)) 即使(a,m)不互质(a^b≡a^{b \%varphi(m)+varphi(m)}left(mod m ight))

  • 证明
    (m)中提一个质因子(p)出来 令(m=p^k·s)
    (gcd(p^k,s)=1),即(p^k,s)互质
    根据欧拉定理,我们知道(p^{varphi(s)}≡1(mod s))
    根据欧拉函数是积性函数,我们知道(varphi(s)|varphi(m))所以有(p^{varphi(m)}≡p^{varphi(s)}(mod s))
    (p^{varphi(s)}=xs+1)
    那么(p^{varphi(s)+k}=xm+p^k)
    所以(p^{varphi(s)+k}≡p^k (mod m)),也有(p^{varphi(m)+k}≡p^k (mod m))
    (b>=k)时,(p^b≡p^{b-k}·p^k≡p^{b-k}·p^{varphi(s)+k}≡p^{b+varphi(m)}(mod m))
    又因为(k<=varphi(p^k)<=varphi(m)),所以当(b>=2varphi(m))时,满足(p^b≡p^{b-varphi(m)}(mod m))
    注意是(2varphi(m))!
    所以可以得到(p^b≡p^{b\%varphi(m)+varphi(m)}(mod m))
    因此我们可以得到对任意质数(p)都有(b>=2varphi(m),p^b≡p^{b\%varphi(m)+varphi(m)}(mod m))
    (m)质因子的(p),有欧拉定理
    (a)因式分解,可以得到
    (a^b≡a^{b\%varphi(m)+varphi(m)}(mod m))
    • 注意 (b<varphi(m))时,公式不一定成立

线性筛法

类似与筛素数,我们在这里利用欧拉函数是积性函数这个性质来筛(varphi)
(mathcal{Code})

int cnt;
int prime[maxn],phi[maxn];
bool vis[maxn];
void Euler_sieve (int n)
{
	phi[1]=1;
	for (int i=2;i<=n;++i){
		if (!vis[i])	prime[++cnt]=i,phi[i]=i-1;
		for (int j=1;j<=cnt&&i*prime[j]<=n;++j){
			vis[i*prime[j]]=true;
			if (i%prime[j]==0){	phi[i*prime[j]]=phi[i]*prime[j];break;}
			phi[i*prime[j]]=phi[i]*phi[prime[j]];
		}
	}
} 

欧拉反演

利用欧拉函数的一条性质
(egin{aligned}n=sum_{d|n}varphi(d)end{aligned})
(上面有证明)
我们试着把(n)换成其他东西试试
(egin{aligned}gcd(i,j)=sum_{d|gcd(i,j)}varphi(d)=sum_{d|i}sum_{d|j}varphi(d)end{aligned})
让我们求个东西试试
(egin{aligned}sum_{i=1}^ngcd(i,n)=sum_{i=1}^nsum_{d|i}sum_{d|n}varphi(d)=sum_{d|n}sum_{i=1}^nsum_{d|i}varphi(d)=sum_{d|n}frac{n}{d}varphi(d)end{aligned})
把它重写一遍作为结论
(egin{aligned}sum_{i=1}^ngcd(i,n)=sum_{d|n}frac{n}{d}varphi(d)end{aligned})

如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
如能得到推荐博主就更开心了
您的鼓励是博主的动力

原文地址:https://www.cnblogs.com/Morning-Glory/p/11106828.html