以下函数计算a^b。 假设我们已经有一个包含所有需要的素数的prime_list,并且从小到大排序。代码是用python编写的。如何确定此算法的时间复杂度?
def power(a,b):
if b == 0:
return 1
prime_range = int(sqrt(b)) + 1
for prime in prime_list:
if prime > prime_range:
break
if b % prime == 0:
return power(power(a, prime), b/prime)
return a * power(a, b-1)
如何确定其时间复杂度? p.s.代码并不完美,但您可以看到这个想法正在使用素数来减少算术运算的次数。 我仍在寻找一个理想的实现,所以请帮助,如果你拿出一些东西。谢谢!
你在用什么语言?您可以以编程方式测量运行时间。 –
即使您的语言的sqrt()也是基于实现的。除非您提供所需的详细信息,否则无法找到此功能的整体复杂性。 –
你真的想测量时间复杂度吗?反对“如何确定时间复杂性”或“如何测量运行时间”? – Stef