• 积性函数专题


    定义

    (;)
    若一个数论函数(f(n))满足,
    (gcd(a,b)=1)时:

    [f(ab)=f(a) imes f(b) ]

    则称(f(n))是一个积性函数。
    特别地,若不要求(gcd(a,b)=1),则称(f(n)是一个完全积性函数)
    (;)
    (;)

    几个常见的积性函数

    [phi (n)=sum_{i=1}^n [gcd(n,i)=1] ]

    [e.g. ;; phi (6)=2 ]

    [mu (n)= egin{cases} 1;;;;;;;;;n=1 \ (-1)^r;;n=p_1^{k_1} imes p_2^{k_2} imes cdots imes p_r^{k_r};;;(k_1=k_2=cdots =k_r=1) \ 0;;;;;;;;;other end{cases} ]

    [e.g. ;; mu (30)=-1 ]

    [I(n)=1 ]

    [epsilon (n)=[n=1] ]

    [id(n)=n ]

    (;)
    (;)

    狄利克雷卷积

    定义

    [(f*g)(n)=sum_{d|n} f(d);g(frac{n}{d}) ]

    性质

    交换律

    [f*g=g*f ]

    结合律

    [(f*g)*h=f*(g*h) ]

    分配律

    [(f+g)*h=f*h+g*h ]

    三个重要的式子

    [mu * I=epsilon ]

    [phi * I=id ]

    [mu * id = phi ]

    证明

    [mu * I=epsilon ]

    [(mu * I)(n)=sum_{d|n} mu (d);I(frac{n}{d}) ]

    [=sum_{d|n} mu (d) ]

    (n=1)时,(mu (1)=epsilon (1) =1),显然成立。
    (n>1)时,(epsilon (n)=0),因此我们只需证明:

    [sum_{d|n} mu (d)=0 ]

    不妨设(n=p_1^{k_1} imes p_2^{k_2} imes cdots imes p_r^{k_r})
    则对于任意的(d|n)(d=p_1^{alpha_1} imes p_2^{alpha_2} imes cdots imes p_t^{alpha_t};;;(0leq alpha_i leq k_i,t leq r))
    (alpha_i >1),则(mu (d)=0)(根据定义)
    因此,(mu (d)= pm 1)当且仅当(alpha_1=alpha_2=cdots = alpha_t=1)
    你想到了什么?
    既然我们钦定了(alpha_i=1)。这其实就是从(r)个数中选(t)个数,当(t)为奇数时,(mu (d)=-1),当(t)为偶数时,(mu (d)=1)
    因此:

    [sum_{d|n} mu (d) ]

    [=C_r^0-C_r^1+C_r^2 cdots =0 ]

    (Q.E.D)
    如果不明白为什么上面式子等于零,可以看我的博客(组合数的性质) https://www.cnblogs.com/czyty114/p/12666932.html
    (;)
    (;)

    [phi * I= id ]

    [(phi * I)(n)=sum_{d|n} phi (d) I(frac{n}{d}) ]

    [=sum_{d|n} phi (d)=id(n)=n ]

    如何证明:(sum_{d|n} phi (d)=n)
    一个有趣的做法。
    现在给定(n)个分数(;; frac{1}{n},frac{2}{n} cdots frac{n}{n})
    将它们都化为最简分数,我们发现化为(frac{b}{a})当且仅当(a|n)(a)(b)互质。
    因此以(a)为分母的分数有(phi (a))
    所以:

    [sum_{d|n} phi (d)=n ]

    (Q.E.D)
    (;)
    (;)

    [mu * id = phi ]

    [(mu * id)(n) ]

    [=sum_{d|n} mu (d) id(frac{n}{d}) ]

    让我们回顾一下,欧拉函数本质上是怎么求的?
    我们首先假设(1-n)的数都与(n)互质(当然这是不可能的)
    由于互质就是满足:(gcd(k,n)=1),所以我们只需满足(gcd(k,n)>1)(k)就不与(n)互质。
    所以枚举(n)的因子(d;;(1<dgeq n)),则(1-n)中是(d)的倍数的数有(frac{n}{d}),但如果单纯的减可能会算重,比如说:(6)可能会被(2,3)减两次,所以我们要加回来。
    同时你又发现,把(d)质因数分解,(d=p_1^{alpha_1} imes p_2^{alpha_2} imes cdots imes p_r^{alpha_r})。若(alpha_i>1),则用(d)减去的数肯定就会被它的因数减过,并被刚好减一次(自己仔细想想)。所以我们也可以忽略这种情况,不加也不减。
    所以你可以发现:这其实就是一个容斥原理:
    (phi (n)= sum_{d|n} (-1)^r imes frac{n}{d})
    所以

    [phi (n)= sum_{d|n} mu (d) id(frac{n}{d}) ]

    (Q.E.D)
    (;)
    (;)

    模板

    (mu (1-n) ,phi (1-n);;;;; n leq 10^7)
    欧拉筛求。
    (Code:)

    phi[1]=1;mu[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!st[i])
        {
            prime[++cnt]=i;
            //质数的情况十分简单 
            phi[i]=i-1;
    	mu[i]=-1; 
        }
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++)
        {
            st[i*prime[j]]=1;
        	if(i%prime[j])//prime[j]为i的最小质因子 
        	{
        		phi[i*prime[j]]=phi[i]*phi[prime[j]];
    		mu[i*prime[j]]=mu[i]*mu[prime[j]];
    		//积性函数的基本性质 
    	} 
    	else
    	{
    		phi[i*prime[j]]=phi[i]*prime[j];
    		mu[i*prime[j]]=0;
    		break; 
    		//根据各自的定义推导 
    	} 
    }
    
  • 相关阅读:
    [整理]解析Json需要设置Mime
    [整理]IE11中的WebGL探秘:渲染速度超Chrome
    [转载]详解主流浏览器多进程架构:Chrome、IE
    [转载]为什么浏览器会使用多进程架构
    [整理]win7下VS2010遇到内存不足解决方发
    [整理]WebAPI中应用oData
    [转载]NodeJS优缺点及适用场景讨论
    [转载]HTML5 真的会消灭原生App吗?
    [转载]微软VS2015支持Android和iOS编程
    VC++调试基础
  • 原文地址:https://www.cnblogs.com/czyty114/p/12707134.html
Copyright © 2020-2023  润新知