#Snow{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 99999; background: rgba(255,255,240,0.1); pointer-events: none; }

欧拉函数与欧拉定理

欧拉函数

一、定义

欧拉函数 φ(n)表示1~n中与n互质的个数


二、性质

以下涉及的数均为数论数.
(1)设p为素数,则φ(p)=p1

  
(2)若m=m1*m2 则有:
  1.若m1,m2有相同质因子,则φ(m)=m2φ(m1)(m2<=m1)
  2.若m1,m2互质,则φ(m)=φ(m1)φ(m2),
  

(3)p为素数,φ(pk)=pkpk1,因为只有p的倍数与其不互质。
  
(4)设n=i=1kpiai
φ(n)=φ(i=1kpiai)
由(2.2)得i=1kφ(piai),
由(3)得i=1k(piaipiai1)=i=1kpiai(11pi)=nik(11pi)
综上φ(n)=nik(11pi)
  

所以对于求解欧拉函数,我们需要先进行质因数分解。

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

或者用每个质数去对它的倍数做贡献.

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

  
  
(5)设n是一个大于2的正整数,那么ϕ(n)是偶数。
证明:对于大于2的质数p,其一定是奇数,那么φ(p)=p1为偶数,
由(3)φ(pk)=pkpk1,
p=2时,φ2k=2k2k1=2k1是偶数,
对于大于2的素数p,φ(pk)=pkpk1,p为奇数,p的次方也为奇数,两个奇数相减为偶数,
所以φ(pk)为偶数。
又有积性性质φ(n)=φ(i=1kpiai)=i=1kφ(piai),所以φ(n)一定是偶数。
  
  
(6)对于n,有n=d|nφ(d)
证明:
易得d|mφ(d)=md|dφ(d)=dφ(md)
对于任意d|m,1am,设gcd(a,m)=d,则gcd(ad,md)=1.一方面a有m个,另一方面,(按d=gcd(a,m)分类计数)满足gcd(a,m)=d的a有φ(md)种取法.故有d|mφ(md)=m
  

欧拉定理

设gcd(a,m)=1,即a,m互质,则aφ(m)1(mod m),特别的,当p为质数时,aφ(m)1(modp)ap11(modm)apa(modm)

证明:
取模m的缩系 a1,a2,..,aφ(m),则aa1,aa2,..,aaφ(m)也是模m的缩系.
所以i=1φ(m)aii=1φ(m)aaiaφ(m)i=1φ(m)ai(modm)aφ(m)1(modm)
特别地,当m=p(p为素数)时,φ(p)=p1,此时ap11(modp)

posted @   繁花孤城  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示