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


Через 3 года после того, как я задал этот вопрос, я нашел решение. Я включил его в качестве ответа .

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

(a + x) mod m = b

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

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

5 24

5 ответов:

Я возвращался к этому вопросу и понял, что это возможно, основываясь на ответе @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.

Вы не можете окончательно вычислить 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

Ага. ты облажался.

Пример:

5 mod 3 = 2
8 mod 3 = 2

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

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

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

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

Например, предположим, что ваше уравнение было:

(2 + x) % 4 = 3

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

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

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

(var1 +var2) mod num=Res

Затем получить

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

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

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