dbdb
geg
# Импортируем функцию timeit из модуля timeit для измерения времени выполнения кода
from timeit import timeit
# Напишем функцию возведения числа a в степень n, где n целое число
a = 2
n = 1000
def power(a, n):
if n == 0:
return 1
return power(a, n-1) * a
print('{} ** {} = '.format(a, n), power(a, n))
print('\nRun 100000 tests...') # Выводим сообщение о начале тестов.
# Вызываем функцию timeit 100000 раз для точного измерения времени выполнения функции power
print(timeit(globals=globals(), stmt='power(a, n)', number=100000) * 10,
'мkс на одно выполнение функции при n = {}'.format(n))
Лист. 1. Алгоритм возведения в степень.
2 ** 1000 = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Run 100000 tests...
163.4900032600035 мkс на одно выполнение функции при n = 1000
Лист. 2. Результат работы программы листинг 1.
# Импортируем функцию timeit из модуля timeit для измерения времени выполнения кода
from timeit import timeit
# Напишем функцию возведения числа a в степень n, где n целое число
a = 2
n = 1000
def power(a, n):
if n == 0:
return 1
if n % 2 == 0:
return power(a * a, n // 2)
return power(a, n-1) * a
print('{} ** {} = '.format(a, n), power(a, n))
print('\nRun 1000000 tests...') # Выводим сообщение о начале тестов.
# Вызываем функцию timeit 1000000 раз для точного измерения времени выполнения функции power
print(timeit(globals=globals(), stmt='power(a, n)', number=1000000),
'мkс на одно выполнение функции при n = {}'.format(n))
Лист. 3. Алгоритм возведения в степень.
2 ** 1000 = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Run 1000000 tests...
1.6686957189995155 мkс на одно выполнение функции при n = 1000
Лист. 4. Результат работы программы листинг 3.
# Импортируем функцию timeit из модуля timeit для измерения времени выполнения кода
from timeit import timeit
# Напишем функцию возведения числа a в степень n, где n целое число
a = 2
n = 1000
def power(a, n):
if n == 0:
return 1
if n % 5 == 0:
return power(a * a * a * a * a, n // 5)
return power(a, n-1) * a
print('{} ** {} = '.format(a, n), power(a, n))
print('\nRun 1000000 tests...') # Выводим сообщение о начале тестов.
# Вызываем функцию timeit 1000000 раз для точного измерения времени выполнения функции power
print(timeit(globals=globals(), stmt='power(a, n)', number=1000000),
'мkс на одно выполнение функции при n = {}'.format(n))
Лист. 5. Алгоритм возведения в степень.
2 ** 1000 = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Run 1000000 tests...
1.4251287910001338 мkс на одно выполнение функции при n = 1000
Лист. 6. Результат работы программы листинг 5.
# Импортируем функцию timeit из модуля timeit для измерения времени выполнения кода
from timeit import timeit
# Напишем функцию возведения числа a в степень n, где n целое число
a = 2
n = 1000
def power(a, n):
if n == 0:
return 1
if n % 5 == 0:
return power(a * a * a * a * a, n // 5)
if n % 2 == 0:
return power(a * a, n // 2)
return power(a, n-1) * a
print('{} ** {} = '.format(a, n), power(a, n))
print('\nRun 1000000 tests...') # Выводим сообщение о начале тестов.
# Вызываем функцию timeit 1000000 раз для точного измерения времени выполнения функции power
print(timeit(globals=globals(), stmt='power(a, n)', number=1000000),
'мkс на одно выполнение функции при n = {}'.format(n))
Лист. 7. Алгоритм возведения в степень.
2 ** 1000 = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Run 1000000 tests...
1.0515102979998119 мkс на одно выполнение функции при n = 1000
Лист. 8. Результат работы программы листинг 5.
опо
Тимофей Хирьянов, МФТИ, Информатика. Алгоритмы и структуры данных на Python 3. Лекция 7. Возведение в степень (в конце лекции).
Источники:
Тимофей Хирьянов, Решето Эратосфена
Llama3, модель AI