#python #pow
Вопрос:
Функция pow() в python3 предоставляет значения для показателей.
>>>pow(2,3)
8
Python3 поддерживает отрицательные показатели, которые могут быть представлены с помощью pow(10,-1). Когда я рассчитал pow(4,-1,5), это дало результат 4.
>>> pow(4, -1, 5)
4
Я не мог понять, как было вычислено значение 4, потому что в фоновом режиме оно выполняет
и он не вернул значение 4 в качестве напоминания, когда я рассчитывал вручную.
Когда значение-ve передается в двух значениях, оно выдает желаемый результат в виде ручного метода.
>>> pow(4, -1)
.25
В чем разница при вычислении отрицательного показателя с модулем?
Ответ №1:
Из документации;
Если mod присутствует, а exp отрицателен, база должна быть относительно простой для mod. В этом случае
pow(inv_base, -exp, mod)
возвращается значение,inv_base
обратноеbase
модулю mod.
Ответ №2:
Начиная с python 3.8, pow
функция позволяет вычислять модульное обратное. Как упоминалось в других ответах, это происходит, когда вы используете целые числа, имеете отрицательный exp, а база относительно проста для mod. (это имеет место в вашем примере)
Что такое модульная обратная связь?
Давайте начнем с обычных инверсий. Некоторое число Y
имеет обратную X
величину, такую что Y * X == 1
. Модульные инверсии очень похожи. Для некоторого числа Y
и некоторого модуля mod
существует обратное X
, такое, что ((X * Y) % mod) == 1
. Из вашего примера вы увидите (4 * 4) % 5
, что на самом деле это равно 1
, что делает 4 допустимым модульным обратным для Y = 4
и mod = 5
.
Как вы просто получаете pow(4, -1, 5) == 0.25
Ну, вы могли бы написать это как отдельные шаги (4 ** -1) % 5
, но, как говорится в документации
если mod присутствует, верните базу в power exp по модулю mod (вычисляется более эффективно, чем pow(база, exp) % mod)
Таким образом, вы можете пожертвовать производительностью, используя (4 ** -1) % 5
. К сожалению, это кажется невозможным сделать pow
.