zoukankan      html  css  js  c++  java
  • 「学习笔记」Dirichlet卷积 莫比乌斯函数 莫比乌斯反演

    前置知识

    引理一

    [forall a,b,c in mathbb{Z}, lfloorfrac{a}{bc} floor = lfloorfrac{lfloor{frac{a}{b}} floor}{c} floor ]

    证明 :

    [frac{a}{b}=lfloorfrac{a}{b} floor+r (0le r <1) ]

    所以

    [egin{align} lfloorfrac{a}{bc} floor &=lfloorfrac{a}{b}cdotfrac{1}{c} floor \ &=lfloorlfloorfrac{a}{b} floorcdotfrac{1}{c}+rcdotfrac{1}{c} floor \ &=leftlfloorfrac{lfloor{frac{a}{b} floor}}{c} ight floor end{align} ]

    引理二

    [forall ninmathbb{N}, left| left{ lfloorfrac{n}{d} floormid dinmathbb{N} ight} ight| le lfloor 2sqrt n floor ]

    略证 :

    (dle sqrt n) 时, (lfloorfrac{n}{d} floor) 最多有 (sqrt n) 个值,

    (d>sqrt n) 时, 每个 (lfloor frac{n}{d} floor) 都对应一个小于 (sqrt n) 的值, 所以也最多有 (sqrt n) 个值,

    故, (lfloor frac{n}{d} floor) 最多有 (2sqrt n) 个值.

    数论分块

    概念

    ​ 对于含有 (lfloor frac{n}{i} floor) 的求和式子, 设集合 (S = left{ imid lfloor frac{n}{i} floor =d ight}), 用集合 (S) 中的最大值 (j) 来代替集合中的值.

    结论

    [j=leftlfloorfrac{n}{lfloor frac{n}{i} floor} ight floor ]

    证明 :

    [egin{align} &ecause lfloorfrac{n}{i} floor le frac{n}{i} \ & herefore leftlfloor frac{n}{lfloorfrac{n}{i} floor} ight floor ge leftlfloor frac{n}{frac{n}{i}} ight floor = lfloor i floor = i \ & herefore i le leftlfloor frac{n}{lfloorfrac{n}{i} floor} ight floor end{align} ]

    数论函数

    定义

    ​ 定义域为 (mathbb{N_+}) 的函数.

    积性函数

    定义

    ​ 若 (forall x,y in mathbb{N_+})(gcd(x,y)=1) , 有 (f(xy)=f(x)f(y)), 则称数论函数 ** (f(x))积性函数**.

    性质

    ​ 若 (f(x),g(x)) 为积性函数, 则以下函数也为积性函数.

    [h(x)=f(x^p) ]

    [h(x)=f^p(x) ]

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

    [h(x)=sum_{d|x} f(x)g(frac{x}{d}) = sum_{ij=x} f(i)g(j) ]

    证明 :

    [egin{align} h(x)h(y) &=left( sum_{ij=x} f(i)g(j) ight) cdot left( sum_{ij=y}f(i)g(j) ight) \ &=sum_{ij=xy}f(i)g(j) \ &=h(xy) end{align} ]

    (PS.) 第二个等号是因为 (x,y) 互质, 且 (f,g) 为积性函数.

    例子

    1. 单位函数

      [varepsilon (n)=[n=1] ]

    2. 恒等函数 ( (k) 默认为 (1) )

      [id_k(n)=n^k ]

    3. 常数函数

      [1(n)=1 ]

    4. 除数函数( (k) 默认为 (1) )

      [sigma_k(n)=sum_{d|n}d^k ]

    5. 欧拉函数

      [varphi(n)=sum_{i=1}^n left[gcd(i,n)==1 ight] ]

    6. 莫比乌斯函数

    Dirichlet 卷积

    定义

    两个数论函数 (f(n),g(n))(Dirichlet) (狄利克雷) 卷积 (h(n)) 也同样为数论函数, 记为 (h=f*g).

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

    性质

    1. 满足交换律和结合律.
    2. 单位函数 $varepsilon $ 为 (Dirichlet) 卷积的单位元, 即对任意数论函数 (f(n)) , 都有 (f*varepsilon =f).

    例子

    ( (1) 为常数函数 (1(n)=1) )

    [epsilon = mu * 1 Longleftrightarrow epsilon(n)=sum_{d|n}mu(d) ]

    1. (d(n)) 为约数函数, 表示 (n) 的约数个数

    [d=1*1 Longleftrightarrow sum_{u|d}1 ]

    [sigma = id*1 Longleftrightarrow sigma(n)=sum_{d|n}d ]

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

    [id=varphi*1 Longleftrightarrow n=sum_{d|n}varphi(d) ]

    莫比乌斯函数

    定义

    [mu(n) = left{ egin{aligned} &1, & n=1 \ &0, & n含有平方因子 \ &(-1)^k, & k 为 n 的本质不同的质因子个数 end{aligned} ight. ]

    (PS.) 本质不同的质因子个数即为 质因子的种类个数.

    性质

    [egin{aligned} sum_{d|n} mu(d) &= left{ egin{align} &1, &n=1 \ &0, &n ot=1 end{align} ight. \ &= varepsilon(n) end{aligned} ]

    证明 :

    [egin{align} 设 n 在算数基本定&理下表示为 p_1^{c_1}p_2^{c_2}cdots p_k^{c_k} \ sum_{d|n}mu(d) &= sum_{i=0}^{k} C_k^i(-1)^i \ &= [1+(-1)]^k \ &= 0^k end{align} ]

    结论

    [[gcd(i,j)=1]=sum_{d|gcd(i,j)}mu(d) ]

    线性筛

    void _mu(){
        mu[1]=1;
        for(int i=2;i<=n;i++){
    	if(!v[i]){ pri[++pri[0]]=i; mu[i]=-1; }  	\ pri 中存的是质数
    	for(int j=1;j<=pri[0]&&i*pri[j]<=n;j++){
    	    v[i*pri[j]]=1;
    	    if(i%pri[j]) mu[i*pri[j]]=-mu[i];
    	    else{ mu[i*pri[j]]=0; break; }
    	}
        }
    }
    

    莫比乌斯反演

    公式

    形式 1

    [若f(n)=sum_{d|n}g(d), 则 g(n)=sum_{d|n}mu(d)f(frac{n}{d}) ]

    形式 2(注意这里 (mu)(f) 的顺序不能反)

    [若 f(x)=sum_{x|d}^n g(d), 则 g(x)=sum_{x|d}^nmuleft(frac{d}{x} ight)f(d) ]

    证明 :

    [egin{align} 法一&: \ &ecause f=g*1, \ & herefore f*mu=g*1*mu=g*varepsilon=g, 得证. \ \ 法二&: \ & egin{aligned} sum_{d|n}mu(d)f(frac{n}{d}) &=sum_{d|n}mu(d)sum_{t|frac{n}{d}}g(t) \ &=sum_{t|n}g(t)sum_{d|frac{n}{t}}mu(d) \ &=sum_{t|n}g(t)left[frac{n}{t}=1 ight] \ &=g(n) end{aligned} end{align} ]

  • 相关阅读:
    上周热点回顾(12.14-12.20)团队
    上周热点回顾(12.7-12.13)团队
    Spark Mllib里如何建立向量标签(图文详解)
    Spark Mllib里如何建立密集向量和稀疏向量(图文详解)
    使用Zeppelin时出现at org.apache.zeppelin.interpreter.thrift.RemoteInterpreterService$Client.recv_getFormType(RemoteInterpreterService.java:288)错误的解决办法(图文详解)
    使用Zeppelin时出现sh interpreter not found错误的解决办法(图文详解)
    Zeppelin的入门使用系列之使用Zeppelin来运行Spark SQL(四)
    Zeppelin的入门使用系列之使用Zeppelin来创建临时表UserTable(三)
    Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
    java.lang.UnsupportedOperationException: setXIncludeAware is not supported on this JAXP implementation or earlier: class gnu.xml.dom.JAXPFactory的解决办法(图文详解)
  • 原文地址:https://www.cnblogs.com/BruceW/p/12952427.html
Copyright © 2011-2022 走看看