Следующая функция вычисляет a^b. предположим, что у нас уже есть первичный список, который содержит все необходимые простые числа и сортируется от малого до большого. Код написан на 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)
Как определить его временную сложность? стр. Код не идеален, но, как вы видите, идея использует простые числа, чтобы уменьшить количество арифметических операций. Я все еще ищу идеальную реализацию, поэтому, пожалуйста, помогите, если вы придумаете что-то. Спасибо!
На каком языке вы используете? Вы можете измерять время работы программно. –
Даже sqrt() вашего языка - это реализация. Невозможно найти общую сложность этой функции, если вы не предоставите необходимые данные. –
Вы действительно хотите измерить временную сложность? Против «Как определить временную сложность» или «Как измерить время работы»? – Stef