博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约数函数
阅读量:5139 次
发布时间:2019-06-13

本文共 1557 字,大约阅读时间需要 5 分钟。

众所周知,\(d\)\(\sigma\)都是积性函数,今天我们来对这俩动刀子。

我打算只讲稍难\(\sigma\),剩下的那个\(d\),留给大家自己思考。

根据定义得到:

\(\begin{aligned}\sigma(p^k)=1+p+p^2+...+p^k\end{aligned}\)

然后我们就能推导出\(\sigma\)的求值式:

\(\begin{aligned}n=\prod_{i=1}p_i^{c_i}\end{aligned},\)

\(\begin{aligned}\sigma(n)=\prod_{i=1}1+p_i+p_i^2...+p_i^{c_i}\end{aligned}\)

尝试用线性筛构造这个函数:

\(x=i\times p_1\),其中\(p\)\(x\)的最小质因子,\(\begin{aligned}x=\prod_{i=1}p_i^{c_i}\end{aligned}\)

  • \(x\)为质数:\(\sigma(x)=1+x\)

  • \(i\)\(p_1\)互质时:\(\sigma(x)=\sigma(i)\times\sigma(p_1)\)

  • \(i\%p_1=0\)时:

    我们具体来讨论一下这个情况。

    \(\begin{aligned}\sigma(x)=\prod_{i=1}1+p_i+p_i^2+...+p_i^{c_i}\end{aligned}\)

    \(\begin{aligned}\sigma(i)=(1+p_1+p_2^2+..+p_1^{c_1-1})\prod_{i=2}1+p_i+p_i^2+...+p_i^{c_i-1}\end{aligned}\)

    我们想要直接通过\(\sigma(i)\)来求\(\sigma(x)\)显然是不现实的,因为我们不知道\(c_1\)是多少。

    那么我们应该怎么做呢?

    我们尝试把这个包含绝对关系的式子转换成包含相对关系的式子。

    因为我们\(x\)\(i\),从第二项开始就是一样的了,所以我们可以设:\(\begin{aligned}T=\prod_{i=2}1+p_i+p_i^2+p_i^{c_i}\end{aligned}\)

    然后式子就转换为了:

    \(\begin{aligned}\sigma(x)=\sigma(i)+p_1^{c_1}\times T\end{aligned}\)

    我们来考虑一下怎么把这个讨厌的\(p_1^{c_1}\)给处理了。

    注意我们一开始的目标:把绝对关系转化成相对关系。

    既然我们不知道\(p_1^{c_1}\times T\)的值,那么我们能不能求出\(p_1^{c_1-1}\times T\)的值呢?

    注意到\(\begin{aligned}\sigma(i)=\sigma(\frac i {p_1})+p_1^{c_1-1}\times T\end{aligned}\)

    然后怎么做应该就不用我多说了吧——盘他!

    \(\begin{aligned}\sigma(x)&=\sigma(i)+p\times(\sigma(i)-\sigma(\frac i {p_1}))\\&=(1+p)\times\sigma(i)-p\times\sigma(\frac i{p_1})\end{aligned}\)

然后我们就能直接用线性筛来求约数函数了。


最后,我在稍微写一下\(d\)的式子吧:

\(\begin{aligned}d(x)=2\times d(i)-d(\frac i {p_1})\end{aligned}\)

转载于:https://www.cnblogs.com/WR-Eternity/p/11023518.html

你可能感兴趣的文章
深入研究java.lang.Process类
查看>>
数字签名的原理
查看>>
知识创造价值
查看>>
精简六法则
查看>>
MD5加密方法
查看>>
HDU 1021 Fibonacci Again
查看>>
基本包装模式
查看>>
软件需求模式阅读笔记02
查看>>
os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)...
查看>>
Session超时和丢失,如何让Sessioon永不过期
查看>>
centos7 增加tomcat开机 启动
查看>>
python拓扑排序
查看>>
绘制摆线
查看>>
微信小程序项目一(小程序配置)
查看>>
正则表达式学习
查看>>
linux 之centos6.3 安装中文输入法
查看>>
hdu.5211.Mutiple(数学推导 && 在logn的时间内求一个数的所有因子)
查看>>
Global.asax 文件是什么(转)
查看>>
CircularSlider半弧形滑动条
查看>>
iOS中的分类(category)和类扩展(extension)
查看>>