5.数学知识——欧拉函数

文章目录

  • 欧拉函数
  • 求欧拉函数

一、欧拉函数

1.什么是欧拉函数?1~n中与n互质的数的个数=欧拉函数\psi (n)。互质就是两个数的公约数只能为1.

比如

2.欧拉函数的性质:若p是质数,则\psi (p)=p-1;若p是质数,则\psi (p^{k})=(p-1)p^{k-1}; 积性函数:若gcd(m,n)=1,则\psi (mn)=\psi (m)\times \psi (n).

第一个结论是因为p是质数,所以他之前的所有数肯定都不能和他整除,所以p的欧拉函数为1~p的长度即p-1;第二个结论的理由如下:1...p...2p...3p......p^k中,p、2p、3p等不能和p^k互质,所以剩余的数都与p^k互质的,因此p^k的欧拉函数为l(1~p)+l(p~2p)+l(2p~3p)+l(3p~p^k)=(p-1)*p^k-1,如图,

第三个结论的证明可以去网上搜一下要用到映射,不过多说明。 

3.欧拉函数的计算公式:

\psi (n)的计算公式的推导利用了欧拉函数的性质二和唯一分解定理

二、求欧拉函数

试除法

1.core idea:分解n的质因子+ϕ(n)的计算公式

2.代码如下:

​
int phi(int n){ //试除法求欧拉函数
    int res = n;//res为ϕ(n)
    for(int i=2; i*i<=n; i++){
        if(n%i == 0){
            res = res/i*(i-1);//res为ϕ(n) 此处为ϕ(n)的计算公式
            while(n%i == 0) n /= i;//除掉n的所有i因子
        }
    }
    if(n>1) res = res/n*(n-1);
    return res;
}

​

举例说明一下, 

 根据欧拉函数的性质,去除一个 p 因子后,新的 res 应该是:新的res=(\frac{n}{p})\times (p-1)       p是一个质因子

时间复杂度为O(\sqrt{n}


 筛法

1.core idea:若i是质数,phi[i] = i - 1。
在线性筛中,每个合数m都是被最小的质因子筛掉的。
设pj是m的最小质因子,则m通过m = pj × i筛掉。
(1) 若i能被pj整除,则i包含了m的所有质因子。
φ(m) = m × ∏(k=1到包含m的所有质因子) (pk^(-1)) = pj × i × ∏(k=1到不包含pj的所有质因子) (pk^(-1)) = pj × φ(i)
例,φ(12) = φ(2 × 6) = 2 × φ(6)
(2) 若i不能被pj整除,则i和pj是互质的。
φ(m) = φ(pj × i) = φ(pj) × φ(i) = (pj - 1) × φ(i)
例,φ(75) = φ(3 × 25) = (3 - 1) × φ(25)

分解n的质因数+欧拉函数第一个性质+线性筛法+ϕ(n)的计算公式

2.代码如下:

​
const int N = 100010;
int p[N], vis[N], cnt; 
int phi[N]; 
void get_phi(int n){ 
    phi[1] = 1; 
    for(int i=2; i<=n; i++){ 
        if(!vis[i]){ 
            p[cnt++] = i; 
            phi[i] = i-1; 
        }
        for(int j=0; i*p[j]<=n; j++){ 
            int m = i*p[j]; 
            if(i%p[j]== 0){ 
                phi[m] = p[j]*phi[i]; 
                break; 
            }else{ 
                phi[m] = (p[j]-1)*phi[i]; 
            }
        }
    }
}

​

注意:

对于非常大的 n,试除法可能仍然不够高效,这时可能需要使用筛法。

线性筛法具体可看质数那一篇文章~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值