数学板块学习之欧拉定理及拓展欧拉定理

欧拉函数

首先 p h i ( n ) phi(n) phi(n)即为欧拉函数 φ ( n ) \varphi(n) φ(n)

对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目( φ ( 1 ) = 1 φ(1)=1 φ(1)=1)。例如 φ ( 8 ) = 4 φ(8)=4 φ(8)=4,因为 1 1 1, 3 3 3, 5 5 5, 7 7 7均和 8 8 8互质。

欧拉函数公式: φ ( x ) = x ∗ ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) … … ( 1 − 1 p n ) \varphi(x) = x*(1-\frac{1}{p_{1}})(1-\frac{1}{p_{2}})……(1-\frac{1}{p_{n}}) φ(x)=x(1p11)(1p21)(1pn1), p i p_{i} pi x x x的质因数。

性质
欧拉数在 n > 2 n>2 n>2时,必定为偶数
质数x的欧拉数为 x − 1 x-1 x1 [ φ ( 7 ) = 6 , φ ( 5 ) = 4 , φ ( 3 ) = 2 ] [\varphi(7) = 6 ,\varphi(5) = 4, \varphi(3) = 2] [φ(7)=6,φ(5)=4,φ(3)=2]
对于质数p有:

  • φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p1,因为对于质数 p p p 1 − p 1-p 1p只有 p p p与本身不互质
  • 如果 i % p = 0 i\%p=0 i%p=0 p h i ( i ∗ p ) = p h i ( i ) ∗ p phi(i*p)=phi(i)*p phi(ip)=phi(i)p
  • 如果 i % p = ̸ 0 i\%p=\not0 i%p≠0 p h i ( i ∗ p ) = p h i ( i ) ∗ ( p − 1 ) phi(i*p)=phi(i)*(p-1) phi(ip)=phi(i)(p1)。这里好像是积性函数?

欧拉函数一个美妙的性质: ∑ d ∣ n φ ( d ) = n \sum_{d|n}\varphi{(d)}=n dnφ(d)=n,写成卷积形式为 φ ∗ I = N \varphi*I=N φI=N

小于n且与n互质的数的和 ∑ i = 1 n − 1 i [ g c d ( i , n ) = 1 ] = n φ ( n ) + [ n = 1 ] 2 \displaystyle\sum_{i=1}^{n-1}i[gcd(i,n)=1]=\cfrac{n\varphi(n)+[n=1]}{2} i=1n1i[gcd(i,n)=1]=2nφ(n)+[n=1]

公式法

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

打表

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

欧拉筛法(线性筛)

int prime[1000100];
bool vis[maxn+10];
int phi[maxn+10];
int tot = 0;
void Euler(){
    me(prime,0);
    me(vis,true);
    me(phi,0);
    phi[1] = 1;
    for(int i = 2; i <= maxn; ++i){
        if(vis[i]) prime[++tot] = i,phi[i] = i-1;
        for(int j = 1; j <= tot && i*prime[j] <= maxn; ++j){
            vis[i*prime[j]] = false;
            if(i%prime[j] == 0){
                phi[i*prime[j]] = phi[i]*prime[j];
                break;
            } 
            else{
                phi[i*prime[j]] = phi[i]*phi[prime[j]];
            }
        }
    }
}

欧拉定理

在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,则: a p h i ( n ) ≡ 1 ( m o d   n ) a^{phi(n)}\equiv1(mod\ n) aphi(n)1(mod n). p h i ( n ) phi(n) phi(n) n n n的欧拉函数的值。

费马小定理

假如 p p p是质数,且 g c d ( a , p ) = 1 gcd(a,p)=1 gcd(a,p)=1,那么 a p − 1 ≡ 1 ( m o d   p ) a^{p-1}\equiv1(mod\ p) ap11(mod p)。即:假如 a a a是整数, p p p是质数,且 a a a, p p p互质(即两者只有一个公约数 1 1 1),那么 a a a p − 1 p-1 p1次方除以 p p p的余数恒等于 1 1 1

注意:费马小定理是欧拉定理的特例,因为 p p p是质数, p p p的欧拉函数值为 p − 1 p-1 p1

拓展欧拉定理

将欧拉定理 a p h i ( n ) ≡ 1 ( m o d   n ) a^{phi(n)}\equiv1(mod\ n) aphi(n)1(mod n)扩展到不互质的情况

a c ≡ { a c % p h i ( n ) gcd(a,n)=1 a c gcd(a,n) = ̸ 1,c &lt; phi(n) a ( c % p h i ( n ) + p h i ( n ) ) gcd(a,n) = ̸ 1,c ≥ phi(n) a^{c}\equiv \begin{cases} a^{c\%phi(n)}&amp; \text{gcd(a,n)=1}\\ a^{c}&amp; \text{gcd(a,n)$=\not$1,c$&lt;$phi(n)}\\ a^{(c\%phi(n)+phi(n))}&amp; \text{gcd(a,n)$=\not$1,c$\geq$phi(n)} \end{cases} acac%phi(n)aca(c%phi(n)+phi(n))gcd(a,n)=1gcd(a,n)≠1,c<phi(n)gcd(a,n)≠1,cphi(n)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值