Подтвердить что ты не робот

Оператор обратного модуля

Спустя 3 года после ответа на вопрос я нашел решение. Я включил его в качестве ответа.

У меня есть выражение с модулем в нем, которое нужно поместить в x.

(a + x) mod m = b

Я не могу понять, что делать с модулем. Есть ли способ получить x сам по себе, или мне не повезло на этом?

Изменить. Я понимаю, что могу получить несколько ответов, но я ищу ответ, который попадает в диапазон m.

4b9b3361

Ответ 1

Я пересматривал этот вопрос и понял, что это возможно, исходя из ответа @Gorcha.

(a + x) mod m = b  
a + x = nm + b  
x = nm + b - a for some integer n

Я не знаю, почему я этого раньше не понимал, но решение можно получить, установив n в 0.

Тогда ответ на мой вопрос будет x = b - a, хотя в примере (26 + x) mod 29 = 3 результат равен -23, который меньше m. Чтобы получить -23 назад в ожидаемом диапазоне, измените его на 29, что дает 6. Хотя это не задано в вопросе, это дает значение между 0 и m.

Окончательное решение затем становится: x = (b - a) mod m

т.е.

(26 + x) mod 29 = 3
x = (3 - 26) mod 29
x = -23 mod 29
x = 6

Что помещает x в диапазон от 0 до m. На экране появится (26 + 6) mod 29 = 3.

Ответ 2

Вы не можете окончательно определить x, но мы можем получить немного больше, учитывая определение оператора.

x mod y = z if x = ny + z for some integer n, where 0 <= z < y

Итак, в вашем случае:

(a + x) mod m = b
a + x = nm + b
x = nm + b - a for some integer n

Ответ 3

Угу. вы ввернуты.

Пример:

5 mod 3 = 2
8 mod 3 = 2

так обратный mod 2 - это что? 8 или 5? или 11? или бесконечность других чисел?

Обратный мод - это отношение, вы начинаете получать более сложную математику, если пытаетесь преследовать это. Если вы находитесь в haskell, вы можете легко представить его с помощью недетерминированности (бесконечный список возможных ответов)

Кроме того, это не вопрос программирования. проверить математический обмен.

Ответ 4

Сложная часть этого уравнения состоит в том, что даже если вы знаете a, m и b, вы не можете окончательно определить x.

Например, скажите, что ваше уравнение:

(2 + x) % 4 = 3

x может быть 1, 5, 9, 13 и т.д.

Это означает, что вам не повезло, нет способа получить x самостоятельно.

Ответ 5

У меня есть это уравнение, чтобы обратить вспять модуль если мы имеем

(var1 +var2) mod num=Res

то для получения

var1= num-((Res-var2)*-1)

например. 25+5mod26=4

var1=26-((4-5)*-1)
var1=26-1
var1=5