具有乘法增量i的循环的复杂性/大theta

时间:2017-11-07 03:57:50

标签: algorithm runtime time-complexity complexity-theory

我试图找到以下时间复杂性/大theta:

def f(n):
    i = 2
    while i <n:
        print(i)
        i = i*i

我知道如何解决这个问题的唯一方法是找到i_k的通用公式,然后求解i_k&gt; = n的等式,但是我最终得到了一个log(logn / log2)/ log(2) )等式作为我的k值,这对我来说似乎有点不对,而且我不确定如何将其转化为一个大的θ表达式。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

实际上答案看起来不错!如果将log x / log 2重写为log 2 x(或简称lg x),那么迭代次数为lg lg n。由于循环迭代k中i的值为2 2 k ,这意味着当我达到值2 2 lg时,循环停止lg n = 2 lg n = n,它匹配循环边界。

更一般地说,在超过n之前可以对值进行平方的次数是Θ(log log n),类似地,在将数字n下降到常数之前可以采用的平方根的数量是Θ( log log n),所以你的回答几乎就是你所期望的。