Pow: примеры (PYTHON)

Руководство по функции pow для возведения в степень в Python
Раздел: Встроенные функции, Математические
pow(x: number, y: number, z: number = None): number

Описание функции pow()

Функция pow() в Python предназначена для возведения числа в степень.

Ее основное применение - математические вычисления, где требуется получить результат возведения одного числа (основания) в степень другого числа (показателя). Она также поддерживает операцию по модулю.

Существует два варианта синтаксиса:

  • pow(base, exp) - возвращает base в степени exp. Возвращаемое значение имеет тип int, если оба аргумента целые и результат целочисленный, иначе - float.
  • pow(base, exp, mod) - возвращает base в степени exp по модулю mod. Все аргументы должны быть целочисленными, а mod - отличным от нуля. Возвращает int. Этот вариант вычислений более эффективен для больших чисел.

Аргументы:

  • base: Основание (число, которое возводится в степень). Может быть целым числом или числом с плавающей точкой.
  • exp: Показатель степени. Может быть целым числом (включая отрицательные) или числом с плавающей точкой.
  • mod (опционально): Модуль. Должно быть целое число, не равное нулю.

Возвращаемое значение:

  • Для pow(base, exp): base ** exp.
  • Для pow(base, exp, mod): base ** exp % mod, но вычисляется более эффективно.

Базовые примеры использования

Стандартное возведение в степень:

print(pow(2, 3))
8

Возведение в отрицательную степень:

print(pow(2, -2))
0.25

Возведение в дробную степень (извлечение корня):

print(pow(9, 0.5))
3.0

Использование с тремя аргументами (возведение в степень по модулю):

print(pow(2, 5, 3))  # (2 ** 5) % 3
2

Аналогичные функции в Python

Оптор **: Инфиксный оператор для возведения в степень. Более лаконичен для базовых случаев. pow() может быть предпочтительнее при необходимости использовать три аргумента или когда функция передается как объект (например, в map).

print(2 ** 3)
8

math.pow(x, y): Функция из модуля math. Всегда возвращает float и не поддерживает операцию по модулю. Преобразует аргументы в float. Полезно, когда требуется именно вещественный результат.

import math
print(math.pow(2, 3))
8.0

Реализации в других языках программирования

PHP: Функция pow($base, $exp) или оператор **. Также есть bcpow() для чисел произвольной точности.

echo pow(2, 3); // 8
8

JavaScript: Метод Math.pow(base, exponent) или оператор **. Нет встроенной поддержки модуля.

console.log(Math.pow(2, 3)); // 8
8

Java: Math.pow(double a, double b) возвращает double. Для модульной арифметики используется BigInteger.modPow().

System.out.println(Math.pow(2, 3)); // 8.0
8.0

SQL (MySQL): Функция POW(X, Y) или оператор POWER(X, Y).

SELECT POW(2, 3);
8

C#: Math.Pow(double x, double y). Для модульной арифметики используют BigInteger.ModPow().

Console.WriteLine(Math.Pow(2, 3)); // 8
8

Lua: Оператор ^ или функция math.pow() (устарела в Lua 5.3 в пользу оператора).

print(2 ^ 3) -- 8
8

Golang: Нет встроенной функции для возведения в степень целых чисел. Для float64 есть math.Pow(x, y float64).

import "math"
fmt.Println(math.Pow(2, 3)) // 8
8

Kotlin: Методы расширения Double.pow(n: Double), Int.pow(n: Int). Нет встроенной поддержки модуля.

println(2.0.pow(3.0)) // 8.0
8.0

Отличие Python - наличие встроенной поддержки модуля в третьем аргументе pow() для эффективных вычислений.

Типичные ошибки

Нулевой модуль: При указании третьего аргумента он не должен быть нулем.

print(pow(2, 3, 0))
ValueError: pow() 3rd argument cannot be 0

Отрицательное основание и нецелая степень: Комбинация приводит к комплексному числу, что вызывает ошибку, если не используются комплексные типы.

print(pow(-4, 0.5))
ValueError: negative number cannot be raised to a fractional power

При работе с комплексными числами ошибки не возникает: print((-4+0j)**0.5).

Большие степени и переполнение: При использовании оператора ** с очень большими целыми числами может потребоваться значительная память. Функция pow с тремя аргументами решает эту проблему для модульной арифметики.

Изменения в последних версиях Python

Начиная с Python 3.8, в функцию pow() разрешили использовать отрицательные значения показателя степени exp при наличии третьего аргумента mod. В этом случае вычисляется модулярное обратное число, что полезно в криптографии.

# Python >=3.8
print(pow(2, -1, 5)) # 3, так как (2 * 3) % 5 == 1
3

Расширенные примеры применения

Модулярная арифметика в криптографии: Быстрое вычисление больших степеней по модулю - основа многих алгоритмов.

Пример python
# Проверка по малой теореме Ферма для простого числа 7
base = 3
prime = 7
result = pow(base, prime-1, prime)
print(f"{base}^{prime-1} mod {prime} = {result}")
# Для простого числа результат всегда 1, если base не кратно prime.
3^6 mod 7 = 1

Обработка больших чисел: Функция с тремя аргументами эффективна для чисел с тысячами цифр.

Пример python
large_num = 123456789
large_exp = 100000
modulus = 13
result = pow(large_num, large_exp, modulus)
print(result)
4

Побитовое представление и степени двойки:

Пример python
# Генерация чисел, являющихся степенями двойки
for exp in range(10):
    print(f"2^{exp} = {pow(2, exp)}")
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512

Вычисление корней:

Пример python
# Кубический корень из 27
print(pow(27, 1/3))
3.0

Использование в лямбда-функциях и генераторах:

Пример python
squares = list(map(lambda x: pow(x, 2), range(5)))
print(squares)
[0, 1, 4, 9, 16]

Проверка четности через возведение в степень -1 по модулю 2: Неклассический пример.

Пример python
for n in range(5):
    parity = pow(-1, n, 2) # Эквивалентно n % 2
    print(f"n={n}, parity={parity}")
n=0, parity=1
n=1, parity=1
n=2, parity=1
n=3, parity=1
n=4, parity=1

Примечание: Этот пример демонстрирует работу, но для проверки четности лучше использовать n % 2.

питон pow function comments

En
Pow Return x to the power y