Python 这个算法的Big-O性能是什么?我通常如何解决这个问题?

Python 这个算法的Big-O性能是什么?我通常如何解决这个问题?,python,algorithm,Python,Algorithm,您好,我有一个算法,我在查找性能时遇到了问题 i=math.ceil(n**0.5) while n % i != 0: i -= 2 这是O(2^n)吗?我不知道您想做什么,但您当前的代码将运行,因为在许多情况下,例如n=13,错误不能除以零,但是如果你用i-=1来代替i-=2,那么你的代码对于每一个n都能正常工作,并且复杂性将是O(n^(1\2))我不知道你想做什么,但是您当前的代码将运行give error在许多情况下不能被零除,例如n=13,但是如果您使用i-=1代替i-=2

您好,我有一个算法,我在查找性能时遇到了问题

 i=math.ceil(n**0.5)
 while n % i != 0: 
  i -= 2

这是O(2^n)吗?

我不知道您想做什么,但您当前的代码将运行,因为在许多情况下,例如
n=13
,错误不能除以零,但是如果你用
i-=1
来代替
i-=2
,那么你的代码对于每一个
n
都能正常工作,并且复杂性将是
O(n^(1\2))

我不知道你想做什么,但是您当前的代码将运行give error在许多情况下不能被零除,例如
n=13
,但是如果您使用
i-=1
代替
i-=2
,那么您的代码将在每个
n
都能正常工作,并且复杂性将是
O(n^(1\2))

你能解释一下你是怎么得到这个的吗?若i-=2在适当的位置会是什么?它不会永远循环,因为你们不能除以0@PadraicCunningham是的,我正要纠正that@church我做了编辑。它不会无限运行,但会给出错误,因为对于n=13,最初i=4,然后i变为2,然后i变为0,而n%0将给出错误不能除以零。@Crunch获取O(n^(1/2))的方法是通过查看循环。从i=n^(1/2)开始,每次迭代时线性减小它。因此,复杂性(如您所说的性能)为O(n^(1/2).无论你将i减少1还是2,都不会影响Big-O的复杂性。你能解释一下你是如何得到这个结果的吗?如果i-=2的话会是什么样的?它不会永远循环,因为你不能除以0@PadraicCunningham是的,我正要纠正that@church我做了一个编辑。它不会无限运行,但会给出错误,因为对于n=13,最初I=4n i变为2,然后i变为0,n%0将给出误差不能被零除。@Crunch获得O(n^(1/2))的方法是通过查看循环。从i=n^(1/2)开始,每次迭代线性减少它。因此复杂性(如您所说的性能)为O(n^(1/2).无论你将i减少1还是2,都不会影响大O复杂性。这应该解决什么问题?这应该解决什么问题?