以下函數計算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