UOJ Logo megatrio的博客

博客

为什么说 d(n) 是 O(n^(1/3)) 级别的——由一道数学题而获得的启发

2021-11-07 18:20:58 By megatrio

由于笔者学艺不精,下文写的东西就很 naive,如果您获得了不好的观看体验,或者觉得这东西不配放到 UOJ 里面,请在评论轻喷。


我们首先从一道数学题开始看起:

来源:2021年 AMC12 B卷 第25题

Let d(n) denote the number of positive integers that divide n, including 1 and n. For example, d(1)=1, d(2)=2, and d(12)=6. Let

f(n)=d(n)n3.

There is a unique positive integer N such that f(N)>f(n) for all positive integers nN. What is the sum of the digits of N?

(A) 5

(B) 6

(C) 7

(D) 8

(E) 9

参考译文如下:

d(n) 表示正整数 n 的正约数(包括 1n)的个数。例如,d(1)=1d(2)=2 以及 d(12)=6。令 f(n)=d(n)n3。存在一个唯一的正整数 N,使得对于所有正整数 nN,都有f(N)>f(n)。问 N 的各位数字之和是多少?

是不是和标题很像?我们先考虑解决这个问题。

看到 d(n) 觉得它不好处理,能不能把它转换成好看点的初等形式呢?

我们很容易发现,d(n)(即约数函数)是一个积性函数,也就是说,对于 a,bN+,若 gcd(a,b)=1,那么 d(ab)=d(a)d(b)。这一点学 OI 的同学应该可以十分迅速地发现。

然后 g(n)=n3 是一个完全积性函数,即 a,bN+,都有 g(ab)=g(a)g(b)

根据上述内容,f(n)=d(n)g(n) 是一个积性函数。

我们对积性函数的性质稍作探索。我们将 n 分解成它的质因数的积,也就是说,让 n=i=1kpiai,其中所有 p 都两两不同,kn 的不同的质因数个数。那么 f(n)=i=1kf(piai)(根据积性函数的定义)。这个式子对于任意积性函数 h(n) 都成立。

于是我们把考虑范围缩小为所有 f(pa)。显然,d(pa)=a+1,于是 f(pa)=a+1pa3

显然,只有那些大于 1f(pa) 才有讨论的意义,不然乘上这个 f(pa) 只会使最后结果的 f(n) 变小。考虑范围进一步缩小,我们接下来来看看哪些 f(pa) 会大于 1

我们把上面的 f(pa)=a+1pa3 再次变形成 f(pa)=(a+1)3pa3。于是 f(pa)1 当且仅当 (a+1)3pa1,也就是说 f(pa)1 当且仅当 (a+1)3pa

我们固定 a来进行讨论。如果 a=1,手玩可得满足条件的 p 只有 2,3,5,7;否则,满足条件的 p 一定满足 ploga(a+1)3=3loga(a+1)。此时 loga(a+1) 一定在区间 (1,2) 内,于是满足条件的 p 只有 235

于是可能为 N 的数只能是那些质因数只有 2357 的数。

其实接下来完全可以直接枚举指数就可以得出答案的,下面这一种方法只是用来娱乐一下各位的大脑的。

我们固定 p 来讨论 a 何时能使答案最大。令 h(a)=f(pa),那么 h(a)>h(b) 当且仅当 (a+1)3pa>(b+1)3pb,两边同时对 p 取对数可以得到上式等价于 3logp(a+1)a>3logp(b+1)b。再令 u(a)=3logp(a+1)a,我们偷个懒,使用导数来找极值。duda=3(a+1)lnp1。容易发现它单调递减,于是 u 是凸的且有最大值,推出 h 有最大值。而使 h 最大的 a 的取值在 u 的导函数与 x 轴交点附近(因为 aN+)。简单变形得极值点在 3lnp1 周围。

通过各种方法,我们可以算出来 N=23×32×51×71=2520,其各位数之和为 9。答案选择 E

总体来说这道题并不是十分困难,我觉得任何一个有些数论功底和会一点点简单高数的高一学生(甚至初三学生)都能做出来。


可能你认为这些已经偏离了主题,但是不要忘记我们已经求出来了 f(n)n=2520 时最大。我们经过计算,发现此时 f(n) 约为 3.53。于是,我们可以认为 d(n)O(n3) 级别的。

如果有错误或者疏漏之处,欢迎各位在评论区批评指正!Orz

评论

请问9不是 E 选项吗?
评论回复
megatrio:感谢提出,已经改正
考虑 d(n)/nk​​,此时 f(pa)​ 的极值在 klnp1​ 处取到,对于很大的 p​ 其极值一定为 1​, f(n)​ 一定有最大值。 记 g(k)​ 为此时的最大 f(n)​ 的话, d(n)​ 一定不超过 g(k)nk​​ 。 g(k)=k/(p(1/lnp1/k)lnp)​​​​​,打个表从 k=2​​ 开始:1.73205,3.52729,8.44696,28.11610,138.31259,1423.83107,​​ 1018​​ 内最大的 d​​ 是 103680​​,用 g(5)n5​​ 估计得到的结果是 111470​​,相当精确。 ~~因此甚至可以恶趣味地说 d(n)​ 是 O(n5logn)​ 级别的。~~ ~~g(k) 可以看成关于 n 的常数,因此 d(n) 可以看做是任意的 O(nk) 级别。~~ 但 g(k)​​ 的数量级不知道怎么进行描述,初步打表感觉是个 abk​ 的形式。
评论回复
fuyuki:出了点问题,不过应该不影响阅读....
d(n) 可以达到 2(1+o(1))lognloglogn,准确一点说就是 ϵ>0n>n0(ϵ),d(n)<2(1+ϵ)lognloglogn 并且有无穷多个 n 使 d(n)>2(1ϵ)lognloglogn,或者可以说是 lim supnlogd(n)log2logn/loglogn=1,证明应该很多数论书都有
评论回复
Jack_haO:<math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>d</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> </math>
事实上,maxnNd(n)=NΘ(1loglogN)。取 n 为前 logNloglogN 个质数的积可以给出下界。 引理:0<ε<1,d(n)<exp(exp(3ε))nε。取 ε=3lnlnnlnlnlnn 即得到上界。 证明:当 pexp(1ε) 时, pεjejj+1=d(pj)p<exp(1ε) 时,d(pj)=j+1εlnpj+1εlnp2εpεjd 的积性, d(n)(2ε)exp(1ε)nε=exp(exp(1ε)ln(2ε))exp(exp(1ε)(2ε1))<exp(exp(3ε))nε,证毕。

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。