• 数论函数与莫比乌斯反演


    数论函数

    取整函数

    定义

    对于实数 (x),记 (⌊x⌋) 为不超过 (x) 的最大整数。
    (lfloor x floor) 也是满足如下关系的唯一整数:
    (lfloor x floor ≤x<lfloor x floor+1)  

    对于正整数 (n)(1)(n)(d) 的倍数有 (⌊frac{n}{d}⌋)

    性质1

    对于任意的 (x) 与正整数 (a)(b),我们均有:      

    [⌊⌊frac{x}{a}⌋/b⌋ = ⌊frac{x}{ab}⌋ ]

    性质2

    (⌊frac{n}{d}⌋) 可能的取值不超过 2√n 种。

    证明

    对于正整数 (n),考虑当 (1≤d≤n) 时,(⌊frac{n}{d}⌋) 的不同的取值个数。
    (d≤sqrt n),则能得到的 (⌊frac{n}{d}⌋) 只有不超过 (sqrt n) 种。
    (d>sqrt n),则 (⌊frac{n}{d}⌋≤frac{n}{d}<sqrt n),又因为 (⌊frac{n}{d}⌋)是正整数,故此时
    可能的取值也不超过 (sqrt n) 种。
    综上,(⌊frac{n}{d}⌋) 可能的取值不超过 (2sqrt n) 种。

    调和数

    [egin{align} &H_{n}=sum_{k=1}^{n}frac{1}{k}\ &=ln n+gamma+o(1) end{align} ]

    可以推出:

    [egin{align} sum_{d=1}^{n}lfloor frac{n}{d} floor=Theta(n logn) end{align} ]

    素数计数函数

    定义&素数定理

    令素数计数函数 (pi(n)) 表示不超过 (n) 的素数个数。我们有如下的素数定理:

    [pi(n)simfrac{n}{ln n} ]

    推论:

    (n) 附近的素数密度近似是 (frac{1}{ln n})

    (n) 个素数 (p_{n}sim n ln n)

    积性函数

    定义

    (f) 是数论函数,若对任意互质的正整数 (a, b) ,都有 (f(ab) = f(a)f(b)) ,则称 $f $ 是积性函数。

    若对任意的正整数 (a, b) ,都有 (f(ab) = f(a)f(b)) ,则称 $ f $ 是完全积性的。

    单位函数

    定义

    单位函数 (epsilon (n)) 定义为:

    [egin{align} epsilon(n)=[n=1]=left{ egin{matrix} &1,n=1;\ &0,n eq1. end{matrix} ight. end{align} ]

    除数函数

    定义

    除数函数 (sigma_{k}) 用来表示 (n) 的因子的 (k) 次方之和:  

    [egin{align} sigma_{k}(n)=sum_{d|n}d^{k} end{align} ]

    约数个数 (sigma_{0}(n)) 常记为 (d(n)) ,约数和 (sigma_{1}(n)) 常记为 (sigma(n))
    除数函数都是积性函数。

    (Euler) 函数

    定义:

    (Euler) 函数 (φ(n)) 表示不超过 (n) 且与 (n) 互质的正整数的个数。

    (n) 的标准分解并结合容斥原理,我们可以得到 (Euler) 函数的表达式:$$varphi(n)=ncdotprod_{i=1}^{s}(1-frac{1}{p_{i}})$$

    其中 (n = p_{1}^{alpha_1}p_{2}^{alpha_2} · · · p_{s}^{alpha_s})(n) 的标准分解。
    由此易见 (Euler) 函数是积性函数。

    性质1

    对于任意 $ n(,)Euler$ 函数有如下性质:

    $$n=sum_{d|n}varphi(d)$$

    证明1

    (1)(n) 中的所有整数按与 (n) 的最大公约数分类。

    (gcd(n, i) = d),那么 (gcd(frac{n}{d} , frac{i}{d} ) = 1) 。而又 (frac{i}{d}) 是不超过 (frac{n}{d}) 的整数,故这样的 (i)(φ(frac{n}{d})) 个。
    考虑所有 (d | n),我们也就考虑到了所有 (1)(n) 之间的 (n) 个整数,因此有$$n=sum_{d|n}varphi(frac{n}{d})=sum_{d|n}varphi(d)$$即:

    [Id=varphi *1 ]

    证明2

    可以先证明 (f(n)=sum_{d|n}varphi (d)) 为积性函数,然后再证对于质数 (p),有

    [f(p^c)=sum_{d|p^c}varphi(d)=varphi(1)+varphi(p)+varphi(p^2)+...+varphi(p^{c-1})=p^c ]

    可以通过定义与等比数列求和得出,然后结论易得

    小技巧,研究一个积性函数,先研究其在质数的幂时的表现。

    性质2

    (p|n) ,则 (varphi(np)=varphi(n)p)

    使用时有:

    (varphi(p^k)=(p-1)p^{(k-1)})

    代码中:

    phi[t]=phi[i]*(i%p[j]?p[j]-1:p[j]);
    

    (Mobius) 函数

    莫比乌斯函数的定义:

    [mu(n)= egin{aligned} &1 && n=1 \ &0 && 有完全平方因子 \ &(-1)^p && 是p个不同素因子积\ end{aligned} ]

    第一次看到这个时我很懵逼,感觉这个函数不那么自然,不知道为什么有这个函数……

    但实际上,它是常函数 (1) 的逆,即 $mu * 1=epsilon $。

    而具体推导可以看这里。(其实好像算是一种容斥?)

    而这满足了进行莫比乌斯反演的需要。

    积性函数的逆:

    (f*g=epsilon),则 (f)(g) 互逆。

    莫比乌斯反演

    现有关系:

    [egin{align} F(n)=sum_{d|n}f(d) end{align} ]

    即:

    [F=f*1 ]

    如果我们易求 (f),那么就可以轻松求出 (F),反之,若 (F) 易求,我们如何求出 (f)

    [F*mu=f*1*mu=f*epsilon=f ]

    倍数的莫比乌斯反演:

    若:

    [F(n)=sum_{n|d}f(d) ]

    则:

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

    又作:

    若:

    [F(n)=sum_{k=1}^{infty}f(kn) ]

    则:

    [f(n)=sum_{k=1}^{infty}mu(k)f(kn) ]

    起初我对这式子不是很理解,觉得不是有 (infty) 项吗,怎么算?

    但实际上在我们的运用过程中 (f(d)) 通常都是有限项的,如(f(d)=sum_{i=1}^{n}sum_{j=1}^{m}[gcd(i,j)=d]),而这种形式好像也更常用

    技巧:

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

    证明:

    (mu * 1=epsilon)

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

    (n) 替换成 (gcd(i,j)) 就是上式了。

    然后 (d|gcd(x,y)) 可以转化为 (d|x,d|y),然后可以枚举倍数来求,

    然后经常可以枚举 (d) 来根据 (i)(j) 的贡献来分块求答案。

    主要思想:

    使用“交换合式顺序”和“改变枚举变量”来化简。

    常见反演:

    (f(d)=sum_{i=1}^{n}sum_{j=1}^{m}[gcd(i,j)=d])

    [egin{align} F(x)&=sum_{x|d}f(d)\ &=sum_{x|d}sum_{i=1}^{n}sum_{j=1}^{m}[gcd(i,j)=d]\ &=sum_{x|d}sum_{i=1}^{n}sum_{j=1}^{m}[x|i,x|j]\ &=lfloor frac{n}{x} floor lfloor frac{m}{x} floor end{align} ]

    (F(x)) 易求,那么就可以反演求 (f(d)) 了。(当然除以 (d) 在利用上面的 (gcd) 变换的技巧也可以得到)

    当然,这类题有些也可以用 (varphi) 来化简,利用 (varphi*1=id) 的性质,将 (gcd) 代换成 (n) 就行了。

    (varphi)(mu) 的关系:

    [egin{align} &Id=varphi *1\ &Id*mu =varphi\ &varphi(n)=sum_{d|n}mu(d)frac{n}{d}\ &frac{varphi(n)}{n}=sum_{d|n}frac{mu(d)}{d} end{align} ]

    关于 (d(n)) 的有力结论:

    [d(nm)=sum_{i|n}sum_{j|m}[gcd(i,j)==1] ]

    证明:

    (nm=prod p_i^{x_i})(n=prod p_i^{y_i}),则 (m=prod p_i^{x_i-y_i})

    (i = p_1^{a_1}cdot p_2^{a_2}cdot p_3^{a_3}cdots p_k^{a_k})(j = p_1^{b_1}cdot p_2^{b_2}cdot p_3^{b_3}cdots p_k^{b_k})

    (gcd(i,j)==1),则若 (a_i=0),则 (b_i)(x_i-y_i+1) 种取值,若 (b_i=0),则 (a_i)(y_i+1) 种取值,(a_i=b_i=0) 的情况重复了,所以一共有 (x_i+1) 种取值。

    故右式的值为 (prod x_i+1)。而这与左式的形式一致。

    orz Sengxian 学长(看了一圈就他的一眼看懂了。。)。

    数论分块

    具体就不写了,简要记录证明思路,算了,也不写了。

  • 相关阅读:
    微信小程序订阅消息
    自动生成小学四则运算题目
    个人项目作业
    自我介绍+软工5问
    软件工程之获小黄衫感言
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业00——问题清单
    2020软件工程作业04
    2020软件工程作业03
  • 原文地址:https://www.cnblogs.com/Hikigaya/p/11616447.html
Copyright © 2020-2023  润新知