n + n / 2 + n / 3 + ... + n / n的和的公式

时间:2018-11-10 15:50:19

标签: algorithm math time-complexity calculus

所以我得到了这个算法,我需要计算它的时间复杂度

就像

for i=1 to n do
    k=i
    while (k<=n) do
        FLIP(A[k])
        k = k + i

其中A是布尔数组,而FLIP则保持不变,即翻转当前值。因此是O(1)

现在我知道应该将内部while循环称为

n/1+n/2+n/3+...+n/n

如果我是正确的,但是那里有一个公式可以进行这种计算吗?

这里很困惑

谢谢!

3 个答案:

答案 0 :(得分:2)

对于T(n) \sum((n-i)/i),更精确的计算是i = 1 to n(因为ki开始)。因此,最终的总和大约为n + n/2 + ... + n/n - n = n(1 + 1/2 + ... + 1/n) - n。我们知道1 + 1/2 + ... + 1/n = H(n)H(n) = \Theta(\log(n)). Hence, T(n) = \Theta(n\log(n))-n对渐近计算成本没有任何影响,例如n = o(n\log(n))

答案 1 :(得分:0)

让我们说我们要计算这个方程的总和

  n + n / 2 + n / 3 + ... + n / n
=> n ( 1 + 1 / 2 + 1 / 3 + ..... + 1 / n )

然后放在括号中(1 +1 / 2 +1 / 3 + ... + 1 / n)这是一个众所周知的Harmonic series,恐怕没有经过验证的计算谐波序列的公式。

答案 2 :(得分:0)

给定的问题归结为计算以下总和 -Sum of harmonic series

虽然无法准确计算此总和,但您仍然可以找到此总和的渐近上限,大约为 log(n)

因此上述问题的答案将是 - nlog(n)