除数函数的渐近上界?

(重发下这篇原发于 2013-05-19 的网易博客)

 

除数函数的渐近上界?

 

大约一年半以前做了一道题目:BZOJ 1053 反素数 http://www.lydsy.com/JudgeOnline/problem.php?id=1053

其实那东西的官方名称是Highly composite number。一般简称HCN。中文名貌似是高合成数。

详见:http://en.wikipedia.org/wiki/Highly_composite_number

OEIS上列出了前几个高合成数:http://oeis.org/A002182

还有个前1000个高合成数的表:http://oeis.org/A002182/b002182.txt

 

然后最近看到了一道神题:BZOJ 3085: 反质数加强版SAPGAP http://www.lydsy.com/JudgeOnline/problem.php?id=3085

orz @shuxk

并且去围观了题解:http://hi.baidu.com/shuxk/item/0d14e22a62f1d61c087508c1

顿时吓哭了。

 

但是我不很满意的地方在于,求高合成数仍然是靠搜索 + 剪枝来解决的 >_<....

好像也就只能这么着了?因为这个问题取对数之后能变成类似背包问题的形式……

而背包问题众所周知是NPC的……= =……

 

而另一个故事是:

某年某月某日,某vfk做SCOI某题在DP时对于每个i枚举约数,AC。

某年某月某日,某vfk做Balkan某题枚举了约数,AC。

某年某月某日,某vfk做POI某题枚举了约数,光荣TLE。

某年某月某日,某vfk做某JZP某KIL枚举了约数,光荣TLE。

 

除数函数的渐近上界?

 

我们来尝试估计一下除数函数tau(n)。

 

除数函数的渐近上界?

如果是sqrt(n)那我某些题是怎么A的……如果是ln n那我某些题是怎么TLE的……

 

感觉没有一个乖巧的软件能帮我画出如此畸形的函数的图像,于是自己用程序画了个:

除数函数的渐近上界?

横轴被压缩到了1/20。x的范围是[1, 19850]。

红色的那一大团就是tau(x)。

红色中间有个极为不明显的黄线,那个是ln x。注意哦……真的有根黄线哦……

绿色的那个是max{tau(y), 1 <= y <= x}。中间断掉的那几个地方就是高合成数导致的。

蓝色的那个是sqrt(x)。

可见蓝线和绿线在小数据时拟合得很好,但是大数据就不行了。

而黄线真是不能多说。

 

我想了很久也不知道如果估计tau(n)的渐近上界。

APIO 2013时陈许旻也表示:“这个问题困扰了我多年。”

 

但是最近居然在维基上发现了上界的估计!

不能直视:

除数函数的渐近上界?

http://en.wikipedia.org/wiki/Divisor_function

 

如果玩一下这个式子貌似就可以得到这个?

除数函数的渐近上界?

可是玩一下图像……

除数函数的渐近上界?

…………………………除数函数的渐近上界?

有丝毫准确度么…………………

 

紧接着在wiki的talk里面发现了个公式:

除数函数的渐近上界?

好像很科学?

也就是说:

除数函数的渐近上界?

 

于是果断又画了个图,感觉非常不错。

除数函数的渐近上界?

所以大概就是这样了?

(1.066是咩啊!!!)

(求证明啊!!!)

(求论文啊!!!)

 

其实复杂度什么的都是浮云?咱还是关心实际数字吧 >_<

10^9以内最大的Highly composite number是735134400,约数个数为1344个。(1000)

int32以内最大的Highly composite number是2095133040,约数个数为1600个。(1000)

10^18以内最大的Highly composite number是897612484786617600,约数个数为103680个。(10^5)

int64以内最大的Highly composite number是9200527969062830400,约数个数为161280个。(10^5)

 

反正约数什么的真是坑爹……>_<……除数函数的渐近上界?