我正在学习不同的Big O时间复杂度,而我拥有的最后一个是“平方根”,但是我似乎找不到任何使用 simple <的有用的Python代码段。 / em>算法来演示这种时间复杂度。
当我看到一个简单的(即使不现实的)代码片段时,我发现更容易理解这些复杂性。
答案 0 :(得分:1)
一个很好的例子是找出一个数字的所有除数。由于如果i
是n
的除数,那么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]