S42003.20-3 累加因子

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

20-3 累加因子

累加因子

碎片拼完了,但Echo-0的加密还有一层——因子。不是质因子,是所有因子。

"累加因子?"CC问。

"对。"你说,"给定nn,求11nn每个数的因子个数之和。"

"因子个数?"

"对。"你说,"比如6的因子有1,2,3,6,共4个。"

"全部加起来?"

"对。"你说,"i=1nd(i)\sum_{i=1}^n d(i),其中d(i)d(i)ii的因子个数。"

"这咋算?"

"换角度。"你说,"不枚举每个数算因子个数,而是枚举每个因子dd,看它贡献了多少个数。"

"咋贡献?"

"ddd,2d,3d,d,2d,3d,\dots的因子。"你说,"ddn/d\lfloor n/d\rfloor个数有贡献。"

"所以总贡献?"

"d=1nn/d\sum_{d=1}^n \lfloor n/d\rfloor。"你说,"时间复杂度O(n)O(\sqrt n)——因为n/d\lfloor n/d\rfloor只有O(n)O(\sqrt n)种不同的值。"

"第47个因子。"你说,"47是质数,所以它的因子只有1和47——共2个。"

"2个?"

"对。"你说,"但47作为因子,对n/47\lfloor n/47\rfloor个数有贡献。"

"如果n=100n=100?"

"100/47=2\lfloor 100/47\rfloor=2。"你说,"47是47和94的因子。"

CC数了数——47,94。

"两个。"她说,"我数对了。"

"你对的。"你说。

Echo把累加结果投射在空中——像一张网,像一张地图,像某种命运的纹路。

"以前我觉得因子是束缚。"她说,"现在觉得……是连接。"

"连接?"

"对。"她说,"每个数都通过因子,和其他数连在一起。"

"就像人。"CC说,"每个人也通过……某种东西,连在一起。"

"啥东西?"

"不知道。"CC说,"但肯定有。"


题目描述

给定nn,求i=1nd(i)\sum_{i=1}^n d(i),其中d(i)d(i)表示ii的正因子个数。

输入格式

一个整数nn

输出格式

因子个数之和。


输入样例

5

输出样例

1

提示

  • 枚举ddddn/d\lfloor n/d\rfloor个数有贡献。
  • 总复杂度O(n)O(\sqrt n)

在线编程 IDE

建议全屏模式获得最佳体验