任务是找到严格大于 b 的数除以数 n。我写了一个简单的函数:
def get_ls(n, b):
i = b+1
k = 0
while i <= n:
if (n%i==0):
k += 1
i += 1
else:
i += 1
return k
但是,当然,它的工作非常缓慢。您能建议加快速度的方法吗?提前致谢。
任务是找到严格大于 b 的数除以数 n。我写了一个简单的函数:
def get_ls(n, b):
i = b+1
k = 0
while i <= n:
if (n%i==0):
k += 1
i += 1
else:
i += 1
return k
但是,当然,它的工作非常缓慢。您能建议加快速度的方法吗?提前致谢。
理论上你应该这样做:
大意 -
我们不需要考虑从
b到的所有数字n我们只需要考虑从
1到 的数字sqrt(n)有必要考虑 2 个乘数 -
i并n // i查看其中哪些大于 b因此,任务的复杂性不是
O(n),而是O(sqrt(n))附言
膝盖上写了代码,理论上可以再优化一点,但主要是实现了速度的提升