欧拉函数 莫比乌斯反演 过程理解

φ \varphi φ 函数 和 μ \mu μ 函数开始

首先是 φ \varphi φ (欧拉)函数的定义

0 0 0 m − 1 m-1 m1 的整数中和 m m m 互素的个数为 φ ( m ) \varphi (m) φ(m)
对于每个素数 p p p φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p1
这是因为素数的定义:除自己本身外,其余全部与 p p p 互素

我们可以计算素数幂 φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ(pk)=pkpk1
因为在 0 ∼ p k 0\sim p^k 0pk p p p 的倍数是 0 , p , 2 p , . . . , p k − p , p k 0,p,2p,...,p^k-p,p^k 0,p,2p,...,pkp,pk 去掉最后一项,我们得到总共与 p k p^k pk 有因子关系的数只有 p k − 1 p^{k-1} pk1 个,至于怎么数出来的我们可以简单看下它每个 p p p 前面的系数,“系数 + 1 +1 +1 ” 就是标号,从 1 , 2 , 3 1,2,3 1,2,3 一直标到 p k − 1 p^{k-1} pk1
互素的个数 φ ( p k ) \varphi(p^k) φ(pk) 即为 {总数} − - {与 p k p^k pk 有公因子的数}

同时欧拉函数还是一个积性函数,原因是 φ ( 1 ) = 1 , φ ( m 1 m 2 ) = φ ( m 1 ) φ ( m 2 ) \varphi(1)=1, \quad\varphi(m_1 m_2)=\varphi(m_1)\varphi(m_2) φ(1)=1,φ(m1m2)=φ(m1)φ(m2) 同时 m 1 m_1 m1 m 2 m_2 m2 互素

一个很好的例子体会一下
φ ( 12 ) = φ ( 4 ) φ ( 3 ) = 2 × 2 = 4 \varphi(12)=\varphi(4)\varphi(3)=2\times 2=4 φ(12)=φ(4)φ(3)=2×2=4
想要进一步的理解我们需要补充一下剩余系的概念
剩余系 R e s ( x ) = ( x   m o d   m 1 , x   m o d   m 2 , . . . , x   m o d   m r ) Res(x)=(x\ mod\ m_1, x\ mod\ m_2, ..., x\ mod\ m_r) Res(x)=(x mod m1,x mod m2,...,x mod mr) 同时所有的 m m m 全都互素,它的意义就是通过同余式的性质,我们可以在不同的分量上独立的进行加减乘法

n n n 12 12 12 互素当且仅当 n   m o d   4 = ( 1   o r   3 ) ( n\ mod\ 4=(1\ or\ 3)( n mod 4=(1 or 3)( 4 4 4 互素的两个数 ) ) ) 而且 n   m o d   3 = ( 1   o r   2 ) ( n\ mod\ 3=(1\ or\ 2)( n mod 3=(1 or 2)( 3 3 3 互素的两个数 ) ) ) 2 × 2 2\times 2 2×2 个与 12 12 12 互素的值就是它们的组合 ( 1 , 1 ) , ( 1 , 2 ) , ( 3 , 1 ) , ( 3 , 2 ) (1,1),(1,2),(3,1),(3,2) (1,1),(1,2),(3,1),(3,2)

一个积性函数完全由它在素数幂的值定义,所以在计算 φ \varphi φ 函数的时候就可以将任意的正整数 m m m 分解成素数的幂因子,对这些幂因子直接求解 φ \varphi φ 函数,然后再乘起来,就可以很方便的计算它的值

对于 φ \varphi φ 函数还有一个有意思的公式,后面的证明需要用到 ∑ d \ m φ ( d ) = m \sum\limits_{d\backslash m} \varphi(d)=m d\mφ(d)=m对所有的 m m m 的因子 d d d 经过 φ \varphi φ 函数映射后求和为 m m m

要理解这个公式我们可以从分数上找到这样的关系:将 0 m , 1 m , . . . , m − 1 m \frac{0}{m},\frac{1}{m},...,\frac{m-1}{m} m0,m1,...,mm1 将这样 m m m 个数约分后分母相同的分数分为一类,而每一类有 φ ( d ) \varphi(d) φ(d) 个。这样所有的 φ ( d ) \varphi(d) φ(d) 相加就是 m m m

莫比乌斯函数

莫比乌斯函数的定义 (中括号表示:里面的表达式若成立则整个值为1,否则为0) ∑ d \ m μ ( d ) = [ m = 1 ] \sum\limits_{d\backslash m}\mu(d)=[m=1] d\mμ(d)=[m=1]这是一个递归定义,有了这个式子我们很容易的将 m m m 带入 1 1 1 来算出 μ ( 1 ) \mu(1) μ(1) 的值
1 1 1 的因子为 1 1 1 μ ( 1 ) = 1 2 \mu(1)=1\\ 2 μ(1)=12 的因子为 1 , 2 1,2 1,2 μ ( 1 ) + μ ( 2 ) = 0 \mu(1)+\mu(2)=0 μ(1)+μ(2)=0 ,解得 μ ( 2 ) = − 1 3 \mu(2)=-1\\ 3 μ(2)=13 的因子为 1 , 3 1,3 1,3 μ ( 1 ) + μ ( 3 ) = 0 \mu(1)+\mu(3)=0 μ(1)+μ(3)=0 ,解得 μ ( 3 ) = − 1 4 \mu(3)=-1\\ 4 μ(3)=14 的因子为 1 , 2 , 4 1,2,4 1,2,4 μ ( 1 ) + μ ( 2 ) + μ ( 4 ) = 0 \mu(1)+\mu(2)+\mu(4)=0 μ(1)+μ(2)+μ(4)=0 ,得到 1 − 1 + μ ( 4 ) = 0 1-1+\mu(4)=0 11+μ(4)=0 ,解得 μ ( 4 ) = 0 \mu(4)=0 μ(4)=0

已经可以看出一点规律的影子,另一个关于 μ \mu μ 函数的定义明确的展示了它的特点
μ ( n ) = { 1 如 果   n = 1 ( − 1 ) r 如 果   n = p 1 p 2 . . . p r ,   p i 是 各 不 相 同 的 素 数 0 其 他 \mu(n)=\begin{cases} 1 & 如果\ n=1 \\ (-1)^r & 如果\ n=p_1p_2...p_r,\ p_i是各不相同的素数 \\ 0 & 其他 \end{cases} μ(n)=1(1)r0 n=1 n=p1p2...pr, pi

莫比乌斯反演

什么叫做反演呢?
简单来讲,如果有一个函数 g g g ,它的作用是将 m m m 的所有因子经过积性函数 f f f 的映射之后再求和,我们想要使用 g g g 来表示 f f f 的公式就需要用到反演。
莫比乌斯反演的公式是这样的,如果有 g ( m ) = ∑ d \ m f ( d ) g(m)=\sum\limits_{d\backslash m}f(d) g(m)=d\mf(d) f ( m ) = ∑ d \ m μ ( d ) g ( m d ) f(m)=\sum\limits_{d\backslash m}\mu(d)g\left(\frac{m}{d}\right) f(m)=d\mμ(d)g(dm)

接下来就是非常详细的证明过程解读:每一步都是一个定理,仔细看吧。

第一步 ∑ d \ m μ ( d ) g ( m d ) = ∑ d \ m μ ( m d ) g ( d ) \sum\limits_{d\backslash m}\mu(d)g\left(\frac{m}{d}\right)=\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)g(d) d\mμ(d)g(dm)=d\mμ(dm)g(d)
我们慢慢把它搞清楚,它使用了这样一个定理 ∑ m \ n a m = ∑ m \ n a n / m \sum\limits_{m\backslash n}a_m=\sum\limits_{m\backslash n}a_{n/m} m\nam=m\nan/m 因为在本质上 n n n n / m n/m n/m 都是 m m m 的因子,而且相乘得 m m m ,在遍历 m m m 的同时实际上也就遍历了 n / m n/m n/m ,它将原式里的参数 m m m 替换为了 n / m n/m n/m 。我们的第一步也是同样的思路,我们将式子中参数 m m m 的因子 d d d 替换为 m / d m/d m/d ,和式仍然遍历所有的项,等式成立。

第二步: ∑ d \ m μ ( m d ) g ( d ) = ∑ d \ m μ ( m d ) ∑ k \ d f ( k ) \sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)g(d)=\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)\sum\limits_{k\backslash d}f(k) d\mμ(dm)g(d)=d\mμ(dm)k\df(k)
第二步我们使用了 g g g 的定义 g ( m ) = ∑ d \ m f ( d ) g(m)=\sum\limits_{d\backslash m}f(d) g(m)=d\mf(d)

第三步:
∑ d \ m μ ( m d ) ∑ k \ d f ( k ) = ∑ k \ m ∑ d \ ( m / k ) μ ( m k d ) f ( k ) \sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)\sum\limits_{k\backslash d}f(k)=\sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu\left(\frac{m}{kd}\right)f(k) d\mμ(dm)k\df(k)=k\md\(m/k)μ(kdm)f(k)
这一步是比较难理解的,用到的公式是这样的 ∑ m \ n ∑ k \ m a k , m = ∑ k \ n   ∑ l \ ( n / k ) a k , k l \sum\limits_{m\backslash n}\sum\limits_{k\backslash m}a_{k,m}=\sum\limits_{k\backslash n} \ \sum\limits_{l\backslash (n/k)}a_{k,kl} m\nk\mak,m=k\n l\(n/k)ak,kl
这里的公式其实就是变换了一个下标的分组,它的求和 第二维是 n n n 的因子 m m m ,第一维是 m m m 的因子 k k k ,转换之后、第一维 k k k 直接是 n n n 的因子,跳过了 m m m ,第二维则是 l l l 因为 n / k n/k n/k k k k 是同阶的,而 l l l 又是 n / k n/k n/k 的因子,你会发现它也是对儿子和儿子的儿子进行了分别两次求和,它们说的其实是一回事,唯一的区别就是后者用 k l kl kl 替换了 m m m 。这里的第三步则是这样的,我们在式子中使用 k d kd kd 来替换 d d d ,而求和下标则用我们的 m m m 的因子 d d d 的因子 k k k 跳过 d d d 直接成为 m m m 的因子,使用 m / k m/k m/k 的因子 d d d 作为第二维求和的下标。

第四步: ∑ k \ m ∑ d \ ( m / k ) μ ( m k d ) f ( k ) = ∑ k \ m ∑ d \ ( m / k ) μ ( d ) f ( k ) \sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu\left(\frac{m}{kd}\right)f(k)=\sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu(d)f(k) k\md\(m/k)μ(kdm)f(k)=k\md\(m/k)μ(d)f(k)和第一步类似,我们将 m / k m/k m/k 看作一个整体,遍历 m / k m/k m/k 的因子 d d d 的同时,也就遍历了 m / k m/k m/k 的另一个因子 ( m / k ) / d (m/k)/d (m/k)/d.

第五步: ∑ k \ m ∑ d \ ( m / k ) μ ( d ) f ( k ) = ∑ k \ m [ m / k = 1 ] f ( k ) \sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu(d)f(k)=\sum\limits_{k\backslash m}[m/k=1]f(k) k\md\(m/k)μ(d)f(k)=k\m[m/k=1]f(k)这一步则是莫比乌斯函数的定义

最后:由于除了m=k的项被累加进入和式以外,其余项都为0 ∑ k \ m [ m / k = 1 ] f ( k ) = f ( m ) \sum\limits_{k\backslash m}[m/k=1]f(k)=f(m) k\m[m/k=1]f(k)=f(m)证明结束。
至于莫比乌斯反演的用途,我就不多讲了,是一个非常有用的公式。详解的证明过程就分享出来为了帮助大家理解。

Have a good time!

参考文献
Ronald L. Graham, Donald E.Knuth, Oren Patashnik. Concrete Math.
Kenneth H.Rosen. Elementary Number Theory and Its Applications.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值