Отражается ли как-то на производительность операция возведения в степень? Python

Написал небольшой скрипт, который находит все делители числа.

V = 100000000000000

D = []
d = 2
while (d ** 2 <= V):
    if V % d == 0:
        D.append(d)
        d_new = V // d
        if d_new != d:
            D.append(d_new)

    d += 1

Начал проверять его скорость, огорчился. Попробовал его как-то оптимизировать, но ничего не получилось. Потом решил поменять операцию возведения в степень на простое умножение.

V = 100000000000000

D = []
d = 2
while (d * d <= V):
    if V % d == 0:
        D.append(d)
        d_new = V // d
        if d_new != d:
            D.append(d_new)

    d += 1

И как оказалось, скорость кода увеличилась более чем в 2 раза. Проверял через timeit.

1 код: 4.419626179999978

2 код: 2.0235268200000065

Почему так происходит, ведь по идее умножение и возведение в степень (в данном случае) - это одно и то же действие?


Ответы (0 шт):