一个经典问题


\[
\sum_{k=1}^n\mathbb{lcm}(k,n)
\]

一般的做法是使用\(\varphi(n)\)函数。

不经典的做法

\[
\begin{align*}
\sum_{k=1}^n\mathbb{lcm}(k,n)
&=\sum_{k=1}^n\frac{nk}{\gcd(n,k)}\tag{gcd与lcm的关系}\\
&=\sum_{d|n}\sum_{k=1}^{n/d}\frac{ndk}{d}[\gcd(n,dk)=d]\tag{枚举gcd(n,k)}\\
&=\sum_{d|n}\sum_{k=1}^{n/d}nk[\gcd(\frac{n}{d},k)=1]\tag{同消去d}\\
&=n\sum_{d|n}\sum_{k=1}^dk[\gcd(d,k)=1]\tag{用d代替n/d}\\
&=n\sum_{d|n}\sum_{k=1}^dk\sum_{j|gcd(d,k)}\mu(j)\tag{莫比乌斯函数的性质}\\
&=n\sum_{j|n}\mu(j)\sum_{d|n/j}\sum_{k=1}^djk\tag{交换求和次序}\\
&=n\sum_{j|n}\mu(j)j\sum_{d|n/j}\frac{d(d+1)}{2}\tag{等差数列求和公式}\\
&=\frac{n}{2}\left(\sum_{j|n}\mu(j)j\sum_{d|n/j}d^2+\sum_{j|n}\mu(j)j\sum_{d|n/j}d\right)\tag{拆分}\\
&=\frac{n}{2}(f(n)+g(n))\tag{设元}\\
\end{align*}
\]

计算\(f(n)\)

考虑
\[
f(n)=\sum_{j|n}\mu(j)j\sum_{d|n/j}d^2
\]
易证\(\mu(j)j\)和\(\sum\limits_{d|n}d^2\)都是积性函数。

则\(f(n)\)为积性函数\(\mu(j)j\)和\(\sum\limits_{d|n}d^2\)的狄利克雷卷积,可得\(f(n)\)为积性函数。

则\(f(n)\)可用欧拉筛法求出如下:
\[
\begin{align*}
f(p^k)
&=\mu(1)\sum_{d=0}^k(p^d)^2+\mu(p)p\sum_{d=0}^{k-1}(p^d)^2\tag{莫比乌斯函数的性质}\\
&=\sum_{d=0}^kp^{2d}-\sum_{d=0}^{k-1}p^{2d+1}\tag{整理}\\
&=\sum_{d=0}^{2k}(-p)^k\tag{合并}\\
&=\frac{1-(-p)^{2k+1}}{1+p}\tag{等比数列求和公式}\\
&=\frac{1+p^{2k+1}}{1+p}\tag{整理}\\
\end{align*}
\]

再维护一个最小质因数的次数\(p^k\)即可。

计算\(g(n)\)

考虑
\[
g(n)=\sum_{j|n}\mu(j)j\sum_{d|n/j}d
\]
同上,可得\(g(n)\)为积性函数。

则\(g(n)\)可

用欧拉筛法求出如下:
\[
\begin{align*}
g(p^k)
&=\mu(1)\sum_{d=0}^kj^d+\mu(p)p\sum_{d=0}^{k-1}j^d\tag{莫比乌斯函数的性质}\\
&=\sum_{d=0}^kj^d-\sum_{d=1}^{k}j^d\tag{整理}\\
&=1\tag{展开}\\
\end{align*}
\]
我们可以惊讶地发现\(g(n)\)恒等于\(1\)!

总结

则我们可以每次\(O(1)\)地求出
\[
\sum_{k=1}^n\mathbb{lcm}(k,n)=\frac{n}{2}(f(n)+1)
\]

莫比乌斯反演求LCM的另一种做法的更多相关文章

  1. bzoj 2154 莫比乌斯反演求lcm的和

    题目大意: 表格中每一个位置(i,j)填的值是lcm(i,j) , 求n*m的表格值有多大 论文贾志鹏线性筛中过程讲的很好 最后的逆元我利用的是欧拉定理求解的 我这个最后线性扫了一遍,勉强过了,效率不 ...

  2. (暂时弃坑)(半成品)ACM数论之旅18---反演定理 第二回 Mobius反演(莫比乌斯反演)((づ ̄3 ̄)づ天才第一步,雀。。。。)

    莫比乌斯反演也是反演定理的一种 既然我们已经学了二项式反演定理 那莫比乌斯反演定理与二项式反演定理一样,不求甚解,只求会用 莫比乌斯反演长下面这个样子(=・ω・=) d|n,表示n能够整除d,也就是d ...

  3. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...

  4. ZOJ 3435 Ideal Puzzle Bobble 莫比乌斯反演

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4119 依然是三维空间内求(1,1,1)~(a,b,c)能看到的整点数,平移一下 ...

  5. 【JZOJ3623】【SDOI2014】数表(table) 树状数组+离线+莫比乌斯反演

    题面 100 \[ Ans=\sum_{i=1}^n\sum_{j=1}^mg(gcd(i,j)) \] 其中, \[ g(d)=\sum_{i|d}i \] 我们注意到\(gcd(i,j)\)最多有 ...

  6. 树上莫比乌斯反演+分层图并查集——cf990G

    /* 树上莫比乌斯反演 求树上 满足 d|gcd(au,av) gcd(au,av)的对数f(d) 如何求: 建立200000层新图,即对于每个数建立一个新图 在加边时,给gcd(au,av)的约数层 ...

  7. 【容斥原理,莫比乌斯反演】用容斥替代莫比乌斯反演第二种形式解决gcd统计问题

    名字虽然很长.但是其实很简单,对于这一类问题基本上就是看你能不能把统计的公式搞出来(这时候需要一个会推公式的队友) 来源于某次cf的一道题,盼望上紫的我让潘学姐帮我代打一道题,她看了看跟我说了题解,用 ...

  8. 【bzoj2694】Lcm 莫比乌斯反演+线性筛

    题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...

  9. BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常

    求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$   $\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i ...

随机推荐

  1. mac系统提示 interactive intelligence 的恼人问题

    处理 interacti intelligence 提示问题记录 二手购买了一台电脑,从最初的小白到现在稍微熟悉mac的使用, 一直困扰我的便是一个提示, 上图 困扰多年, 记录一下解决和尝试过程吧. ...

  2. typescript 错误记录

    经常遇到 typescript 的编译错误,虽然可以绕过去,不过既然采用了,还是解决问题,了解其中的思想比较重要. 一般遇到错误码 error TS2304: Cannot find name ... ...

  3. P2258 子矩阵——搜索+dp

    P2258 子矩阵 二进制枚举套二进制枚举能过多一半的点: 我们只需要优化一下第二个二进制枚举的部分: 首先我们先枚举选哪几行,再预处理我们需要的差值,上下,左右: sum_shang,sum_hen ...

  4. FWT快速沃尔什变换例题

    模板题 传送门 #include<bits/stdc++.h> #define ll long long #define max(a,b) ((a)>(b)?(a):(b)) #de ...

  5. 利用iterm2,在命令行预览图片,服务器也是可以的

    1.首先你本地电脑上要安装iterm2软件,我们这里使用brew安装 这个是一定要装的,因为能在命令行渲染出图片文件全靠它,其实不是服务器渲染出来的,而是iterm2 官方网站:https://www ...

  6. 第10组 Alpha冲刺(2/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 了解了如何根据系统获取的实际情况进行后端任务的调整 网易云音乐推荐算法的分析 ...

  7. Java8中LocalDate的使用---项目中日期处理

    // 获取当前日期 LocalDate now = LocalDate.now(); // 设置日期 LocalDate now2 = LocalDate.of(2099, 2, 28); // 解析 ...

  8. Mybatis-Generator开发教程

    转载:https://blog.csdn.net/qqyb2000/article/details/80031559 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyB ...

  9. ubuntu上安装python的ldap模块

    首先安装 apt-get install libldap2-dev 然后再安装 apt-get install libsasl2-dev 然后就可以继续安装你的python-ldap模块了 pip i ...

  10. SNAT场景模拟

    我的网络配置跟教程中的这个略有不同: web server:192.168.66.101 nat server:192.168.66.188:192.168.6.172 client:192.168. ...