除数函数的渐近上界?

(重发下这篇原发于 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。

 

除数函数的渐进上界? - vfleaking - vfleaking的博客

 

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

 

除数函数的渐进上界? - vfleaking - vfleaking的博客

如果是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

 

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

 

可是玩一下图像……

…………………………除数函数的渐进上界? - vfleaking - vfleaking的博客

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

 

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

好像很科学?

也就是说:

除数函数的渐进上界? - vfleaking - vfleaking的博客

 

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

所以大概就是这样了?

(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)

 

反正约数什么的真是坑爹……>_<……除数函数的渐进上界? - vfleaking - vfleaking的博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值