运行 下面函数的时间

Running time of the function below

外循环运行了 n 次,但我无法找到内循环的 运行 时间和总的 运行 时间,你能帮忙解决这个问题吗?

def function(n)
    count=0
    if n<=0:
        return
    for i in range(1,n):
        j=1
        While j<n:
            j=j+i
            count = count+1
    print(count)

对于 i 的每个值,内部循环运行 O(n/i) 次。

如果我们对 i 的所有值求和,我们得到:

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

总和 1 + 1/2 + ... + 1/nharmonic number,它在 O(logn) 中,所以您的代码是 O(nlogn)