欧拉函数与积性函数

数论记号

  • a ∣ b a|b ab 记作a整除b(b%a==0)
  • [ a = = 1 ] [a==1] [a==1] 表示当表达式成立时值为真
  • ϕ : \phi: ϕ:欧拉函数
  • μ : \mu: μ:莫比乌斯函数

欧拉函数

算数基本定理

N = p 1 c 1 p 2 c 2 . . . p m c m   p ∈ p r i m e N = p_1^{c_1}p_2^{c_2}...p_m^{c_m}\space p\in prime N=p1c1p2c2...pmcm pprime

欧拉函数 ϕ ( n ) \phi(n) ϕ(n)表示的是 [ 1 , n ] [1,n] [1,n]之间与n互质的数的数量


ϕ ( n ) = ∑ i n [ g c d ( n , i ) = = 1 ] \phi(n) = \sum_i^n[gcd(n,i)==1] ϕ(n)=in[gcd(n,i)==1]
对于素数 P, ϕ ( P ) = P − 1 \phi(P)=P-1 ϕ(P)=P1.

若合数 C = P 1 ∗ P 2 C=P1 * P2 C=P1P2.

对于素数P1,p1的倍数有P1,2P1,3P1,..(C/P1)*P1共计C/P1个,同理,1~C中P2的倍数有C/P2个.

如果我们把这C/P1+C/P2数去掉,那么P1*P2的倍数被排除了两次,需要再加回来一次.

因此贡献是 ϕ ( C ) = C − C P 1 − C P 2 + C P 1 ∗ P 2 = C ∗ ( 1 − 1 P 1 − 1 P 2 + 1 P 1 ∗ P 2 ) = C ∗ ( 1 − 1 P 1 ) ∗ ( 1 − 1 P 2 ) \phi(C)=C-\frac{C}{P1}-\frac{C}{P2}+\frac{C}{P1*P2}=C*(1-\frac{1}{P1}-\frac{1}{P2}+\frac{1}{P1*P2})=C*(1-\frac{1}{P1})*(1-\frac{1}{P2}) ϕ(C)=CP1CP2C+P1P2C=C(1P11P21+P1P21)=C(1P11)(1P21).

C = P 1 ∗ P 2 ∗ P 3 C=P1*P2*P3 C=P1P2P3时,

ϕ ( C ) = C ∗ ( 1 − 1 P 1 − 1 P 2 − 1 P 3 + 1 P 1 ∗ P 2 + 1 P 1 ∗ P 3 + 1 P 2 ∗ P 3 − 1 P 1 ∗ P 2 ∗ P 3 ) = C ∗ ( 1 − 1 P 1 ) ∗ ( 1 − 1 P 2 ) ∗ ( 1 − 1 P 3 ) \phi(C)=C*(1-\frac{1}{P1}-\frac{1}{P2}-\frac{1}{P3}+\frac{1}{P1*P2}+\frac{1}{P1*P3}+\frac{1}{P2*P3}-\frac{1}{P1*P2*P3})=C*(1-\frac{1}{P1})*(1-\frac{1}{P2})*(1-\frac{1}{P3}) ϕ(C)=C(1P11P21P31+P1P21+P1P31+P2P31P1P2P31)=C(1P11)(1P21)(1P31).

推广后便是
C = p 1 c 1 p 2 c 2 . . . p m c m ϕ ( C ) = C ∗ ∏ 质 数 p ∣ C ( 1 − 1 p ) C=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\\ \phi(C)=C*\prod_{质数p|C}(1-\frac{1}{p}) C=p1c1p2c2...pmcmϕ(C)=CpC(1p1)
1 − 1 p = p − 1 p 1-\frac{1}{p} = \frac{p-1}{p} 1p1=pp1

T = P 1 c 1 − 1 P 2 c 2 − 1 . . . P m c m − 1 , F = P 1 P 2 . . . P m T=P_1^{c_1-1}P_2^{c_2-1}...P_m^{c_m-1},F=P_1P_2...P_m T=P1c11P2c21...Pmcm1,F=P1P2...Pm.
ϕ ( C ) = T ∗ F ∗ ∏ 质 数 p ∣ C ( 1 − 1 p ) ϕ ( C ) = T ∗ ∏ 质 数 p ∣ C ( p − 1 ) \phi(C)=T*F*\prod_{质数p|C}(1-\frac{1}{p})\\ \phi(C)=T*\prod_{质数p|C}(p-1) ϕ(C)=TFpC(1p1)ϕ(C)=TpC(p1)
对于 C 2 = C 1 ∗ P C2 = C1*P C2=C1P.

C1中早就存在质数P则,新增P后对C2的影响只是 T T T,而不会影响 F F F,因为 F F F,只是出现质数种类的集合
ϕ ( C 2 ) = ϕ ( C 1 ) ∗ P \phi(C2)=\phi(C1)*P ϕ(C2)=ϕ(C1)P
否则,就会影响到 F F F,但是却不会影响到 T T T,因为其统计的是质数出现次数减一的的贡献,出现一次又减去就相当于不减去.
ϕ ( C 2 ) = ϕ ( C 1 ) ∗ ( P − 1 ) \phi(C2)=\phi(C1)*(P-1) ϕ(C2)=ϕ(C1)(P1)

const int maxn = 1e6+10;
int pri[maxn/8],tot,phi[maxn];
bool vis[maxn];
void init()
{
    phi[1]=1;
    for(int i=2;i<maxn;++i){
        if(!vis[i])pri[++tot]=i,phi[i]=i-1;
        //质数的欧拉函数是质数减一
        for(int j=1;j<=tot&&i*pri[j]<maxn;++j){
            vis[i*pri[j]]=1;
            if(i%pri[j])phi[i*pri[j]]=phi[i]*(pri[j]-1)//新增质数时*(j-1)
            else {
                phi[i*pri[j]]=phi[i]*pri[j]//不是新增直接乘
                break;
            }
        }
    }
}

例题

令 f ( x ) = ∑ i x ϕ ( i ) 求 ∑ d n ϕ ( d ) ∗ f ( n / d ) 令f(x) = \sum_i^x\phi(i)\\ 求\sum_d^n\phi(d)*f(n/d) f(x)=ixϕ(i)dnϕ(d)f(n/d)

分块的要点:被除的数为不变值,应计算不被除的数_的前缀和

#include<bits/stdc++.h>
typedef long long ll;
const int maxn = 1e6+10;
int pri[maxn/8],tot,phi[maxn];
ll sum[maxn];
bool vis[maxn];
void init()
{
    phi[1]=1;
    for(int i=2;i<maxn;++i){
        if(!vis[i])pri[++tot]=i,phi[i]=i-1;
        //质数的欧拉函数是质数减一
        for(int j=1;j<=tot&&i*pri[j]<maxn;++j){
            vis[i*pri[j]]=1;
            if(i%pri[j])phi[i*pri[j]]=phi[i]*(pri[j]-1)//新增质数时*(j-1)
            else {
                phi[i*pri[j]]=phi[i]*pri[j]//不是新增直接乘
                break;
            }
        }
    }
    for(int i=1;i<=n;i++)sum[i]=sum[i-1]+phi[i];
}

ll solve(ll n)
{
    ll ans=0;
    for(ll l=1,r;l<=n;l=r+1){
        r=n/(n/l);
        ans += (sum[r]-sum[l-1])*sum[n/l];
    }
    return ans;
}

int main(){
    int n;
    init();
    while(cin>>n)
        cout<<solve(n)<<endl;
    return 0;
}

积性函数

定义一

如果当a,b互质时,有 f ( a b ) = f ( a ) ∗ f ( b ) f(ab)=f(a)*f(b) f(ab)=f(a)f(b),那么称 f ( x ) f(x) f(x)是积性函数

如果不当a,b互质时,仍有 f ( a b ) = f ( a ) ∗ f ( b ) f(ab)=f(a)*f(b) f(ab)=f(a)f(b),那么称 f ( x ) f(x) f(x)是完全积性函数

定义二

f f f是积性函数,在算数基本定理中 n = ∏ 1 m p i c i n = \prod_1^m p_i^{ci} n=1mpici,则 f ( n ) = ∏ i m f ( p i c i ) f(n) = \prod_i^mf(p_i^{c_i}) f(n)=imf(pici).

积性函数性质1

F ( X ) = ∑ d ∣ x G ( d ) ∗ H ( x / d )   [ g c d ( d , x / d ) = = 1 ] F(X)=\sum_{d|x} G(d)*H(x/d)\space [gcd(d,x/d)==1] F(X)=dxG(d)H(x/d) [gcd(d,x/d)==1].若函数$ G,H 都 是 积 性 函 数 , 则 都是积性函数,则 ,F$也是积性函数

ϕ ( x ) \phi(x) ϕ(x)函数积性证明:

只要证明 f ( n ) = ∏ i m f ( p i c i ) f(n) = \prod_i^mf(p_i^{c_i}) f(n)=imf(pici).就可以证明 ϕ ( x ) \phi(x) ϕ(x)是积性函数

根据欧拉函数的求法,对于任意一个数C,对于C2=C1*P,若P|C1,则 ϕ ( C 2 ) = ϕ ( C 1 ) ∗ P \phi(C2)=\phi(C1)*P ϕ(C2)=ϕ(C1)P,否则 ϕ ( C 2 ) = ϕ ( C 1 ) ∗ ( P − 1 ) \phi(C2)=\phi(C1)*(P-1) ϕ(C2)=ϕ(C1)(P1).

因此,对于 C = p c i C=p^{c_i} C=pci, ϕ ( C ) = ( 1 − 1 p ) ∗ p c i \phi(C)=(1-\frac{1}{p})*p^{c_i} ϕ(C)=(1p1)pci.

那么对于
C = p 1 c 1 p 2 c 2 . . . p m c m ϕ ( C ) = C ∗ ∏ 质 数 p ∣ C ( 1 − 1 p ) C=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\\ \phi(C)=C*\prod_{质数p|C}(1-\frac{1}{p}) C=p1c1p2c2...pmcmϕ(C)=CpC(1p1)
那么显然 ϕ \phi ϕ是积性函数

ϕ ( x ) \phi(x) ϕ(x)函数性质1

I d = ϕ ∗ I = ∑ d ∣ x ϕ ( d ) ∗ I ( x / d ) Id = \phi * I=\sum_{d|x}\phi(d)*I(x/d) Id=ϕI=dxϕ(d)I(x/d)

其中 I ( x ) = 1 I(x)=1 I(x)=1,记作不变函数(并且是积性函数),并且根据积性函数性质 I d Id Id也是积性函数,那么有
I d ( N ) = ∏ i m I d ( p i c i ) Id(N)=\prod_i^mId(p_i^{c_i}) Id(N)=imId(pici)
同时,对于 C = p c i C=p^{c_i} C=pci
I d ( C ) = ∑ d ∣ C ϕ ( d ) = 1 + ( p − 1 ) + ( p − 1 ) ∗ p + ( p − 1 ) ∗ p 2 + . . . + ( p − 1 ) ∗ p c i = p c i = C Id(C)=\sum_{d|C}\phi(d)=1+(p-1)+(p-1)*p+(p-1)*p^2+...+(p-1)*p^{c_i}=p^{c_i}=C Id(C)=dCϕ(d)=1+(p1)+(p1)p+(p1)p2+...+(p1)pci=pci=C
因此
I d ( N ) = ∏ i m p i c i = N   →   I d ( N ) = N Id(N)=\prod_i^mp_i^{c_i} = N\space \rightarrow \space Id(N) = N Id(N)=impici=N  Id(N)=N
实际上这 I d ( x ) = x Id(x)=x Id(x)=x就是自然函数,并且证明了 ∑ d ∣ x ϕ ( d ) = x \sum_{d|x}\phi(d)=x dxϕ(d)=x.

性质2

∀ n > 1 , 1   n 中 与 n 互 质 的 数 的 和 为 n ∗ ϕ ( n ) / 2 \forall n>1,1~n中与n互质的数的和为n*\phi(n)/2 n>1,1 nnnϕ(n)/2.

证明:

g c d ( n , i ) = = 1 , 则 g c d ( n , n − i ) = = 1 gcd(n,i)==1,则gcd(n,n-i)==1 gcd(n,i)==1,gcd(n,ni)==1.

使用反证法,若 g c d ( n , n − i ) = = k , 则 k ∣ n , k ∣ ( n − i ) , 那 么 k ∣ i gcd(n,n-i)==k,则k|n,k|(n-i),那么k|i gcd(n,ni)==k,kn,k(ni),ki.因此成立

由此可以发现互质的数成对出现,并且和为n,共计 ϕ ( x ) / 2 \phi(x)/2 ϕ(x)/2对.所以和为 n ∗ ϕ ( n ) / 2 n*\phi(n)/2 nϕ(n)/2.证毕.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值