“平方根”时间复杂度的Python代码示例

时间:2019-02-04 16:53:22

标签: python algorithm time-complexity big-o sqrt

我正在学习不同的Big O时间复杂度,而我拥有的最后一个是“平方根”,但是我似乎找不到任何使用 simple <的有用的Python代码段。 / em>算法来演示这种时间复杂度。

当我看到一个简单的(即使不现实的)代码片段时,我发现更容易理解这些复杂性。

1 个答案:

答案 0 :(得分:1)

一个很好的例子是找出一个数字的所有除数。由于如果in的除数,那么n/i也是n的除数,您只需要循环到n的平方根即可找出全部其除数。

import math

def get_divisors(n):
    m = 1 + int(math.sqrt(n))
    divisors =  []
    for i in range(1, m):
        if n % i == 0:
            divisors.append(i) 
            if i != n//i:   # prevent counting twice for square numbers
                divisors.append(n // i)
    return divisors
print(get_divisors(100))  # [1, 100, 2, 50, 4, 25, 5, 20, 10]