You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求和式n/1 + n/2 + … + n/n的时间复杂度是O(nlogn)还是O(n)

问题解答

求和式复杂度结论

你提到的求和式 n/1 + n/2 + n/3 + … + n/n 的时间复杂度为 O(nlogn),而非O(n)。

推导逻辑

该求和式可以变形为n乘以第n个调和数Hₙ:

Hₙ = 1 + 1/2 + 1/3 + … + 1/n
根据数学上的渐近分析,调和数的增长阶和自然对数一致,即Hₙ = ln n + γ + o(1),其中γ为欧拉常数(约0.5772),是一个固定常量。代入求和式后整体的量级为nlnn,对应大O复杂度表示就是O(nlogn)*(算法复杂度分析中对数的底数不影响量级判断)。

对应筛法的复杂度说明

你采用的「遍历1~n的每个数,标记其所有倍数」的求约数方案,是经典的埃氏筛变种,总操作量和上述求和式完全匹配:

  • 遍历数k时,需要标记的倍数数量为⌊n/k⌋
  • 总操作数就是∑(k=1到n) ⌊n/k⌋,和你给出的求和式等价
    这个*O(nlogn)*的复杂度在实际场景中表现非常好,n到1e7量级都可以在普通设备上正常运行。

内容的提问来源于stack exchange,提问作者cc959

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:54:01