Оператор Обратного Модуля
Через 3 года после того, как я задал этот вопрос, я нашел решение. Я включил его в качестве ответа .
У меня есть выражение с модулем в нем, которое нужно поставить в терминах x.
(a + x) mod m = b
Я не могу понять, что делать с модулем. Есть ли способ получить x сам по себе, или мне не повезло в этом?Edit : я понимаю, что могу получить несколько ответов, но я ищу ответ, который попадает в диапазон m.
5 ответов:
Я возвращался к этому вопросу и понял, что это возможно, основываясь на ответе @Gorcha.
Я не знаю, почему я не понял этого раньше, но решение может быть получено, установив n в 0.(a + x) mod m = b a + x = nm + b x = nm + b - a for some integer n
Ответ на мой вопрос тогда кажется
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? или бесконечность других чисел?
Обратная мода-это отношение,вы начинаете получать более сложную математику, если вы пытаетесь следовать этому. Если вы находитесь в Хаскелле, вы можете легко смоделировать его с недетерминизмом (бесконечный список возможных ответов)
Кроме того, это не совсем вопрос программирования. проверьте математический обмен.