• 莫比乌斯反演欧拉函数杜教筛大总结


    莫比乌斯函数

    定义

    (n=prod_{i=1}^{k} p_i^{c_i}),则(mu(n)=(-1)^k),特别地(mu(1)=1)

    性质

    最常用性质

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

    反演性质

    (F(n)=sum_{d|n}f(d) Longleftrightarrow f(n)=sum_{d|n}F(d)mu(frac{n}{d}))

    (F(n)=sum_{n|d}f(d) Longleftrightarrow f(n)=sum_{n|d}F(d)mu(frac{d}{n}))

    常用性质

    (sum_{i=1}^{n}sum_{j=1}^{n}[gcd(i,j)=1]=sum_{d=1}^{n}mu(d)lfloorfrac{n}{d} floor lfloorfrac{n}{d} floor)

    欧拉函数

    定义

    (n=prod_{i=1}^{k}p_i^{c_i}),有(phi(n)=nprod_{i=1}^{k}frac{p_i-1}{p_i})

    性质

    最常用性质

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

    零零散散的一些性质(没收集完)

    (phi(ab)=frac{phi(a)phi(b)gcd(a,b)}{phi(gcd(a,b))})

    与莫比乌斯函数的联系

    $frac{phi(n)}{n}=sum_{d|n}frac{mu(d)}{d} Longleftrightarrow phi(n)=sum_{d|n}mu(d)frac{n}{d}=sum_{d|n}mu(frac{n}{d})d $

    杜教筛

    思路

    狄利克雷卷积

    两函数(f,g)的狄利克雷卷积((f*g))定义如下:

    ((f*g)(i)=sum_{d|i}f(d)g(frac{i}{d}))

    函数前缀和

    (S(n)=sum_{i=1}^{n}f(i))

    (sum_{i=1}^{n}(f*g)(i)\=sum_{i=1}^{n}sum_{d|i}g(d)f(frac{i}{d})\=sum_{d=1}^{n}g(d)sum_{i=1}^{lfloor frac{n}{d} floor }f(i)\=sum_{d=1}^{n}g(d)S(lfloor frac{n}{d} floor ))

    移项得:

    (g(1)S(n)=sum_{i=1}^{n}(f*g)(i)-sum_{d=2}^{n}g(d)S(lfloor frac{n}{d} floor ))

    于是可以递归求解。

    莫比乌斯函数前缀和

    (f(i)=mu(i),g(i)=1),有:

    (sum_{i=1}^{n}(f*g)(i)\=sum_{i=1}^{n}sum_{d|i}g(d)f(frac{i}{d})\=sum_{i=1}^{n}sum_{d|i}mu(frac{i}{d})\=sum_{i=1}^{n}[i=1]\=1)

    所以(S(n)=1-sum_{d=2}^{n}g(d)S(lfloor frac{n}{d} floor ))

    欧拉函数前缀和

    (f(i)=phi(i),g(i)=1),有:

    (sum_{i=1}^{n}(f*g)(i)\=sum_{i=1}^{n}sum_{d|i}g(d)f(frac{i}{d})\=sum_{i=1}^{n}sum_{d|i}phi(frac{i}{d})\=sum_{i=1}^{n}i\=frac{n(n+1)}{2})

    所以(S(n)=frac{n(n+1)}{2}-sum_{d=2}^{n}g(d)S(lfloor frac{n}{d} floor ))

    其他一些函数的前缀和

    (f(i)=mu(i)*i),则(g(i)=i)

    (sum_{i=1}^{n}(f*g)(i)\=sum_{i=1}^{n}sum_{d|i}g(d)f(frac{i}{d})\=sum_{i=1}^{n}sum_{d|i}d*frac{i}{d}*mu(frac{i}{d})\=sum_{i=1}^{n}isum_{d|i}mu(frac{i}{d})\=sum_{i=1}^{n}[i=1]\=1)

    所以(S(n)=1 - sum_{d=2}^{n}g(d)S(lfloor frac{n}{d} floor ))

    留个大坑先。。。。。

  • 相关阅读:
    WebService cxf提供接口
    在文件系统的某一个目录中查找某一个字符串
    在notepad++中插件安装的办法
    windows中的oracle12SE后启动的系统服务的列表
    在windows环境初步了解tuxedo
    使用MS VS的命令来编译C++程序
    我所常用的git命令
    使用python对文件中的数值进行累加
    C++中继承关系中的同名隐藏和对策
    用eclipse来制作并使用可执行的jar文件
  • 原文地址:https://www.cnblogs.com/zjlcnblogs/p/12010303.html
Copyright © 2020-2023  润新知