Оператор Обратного Модуля
более 3 лет после того, как я задал вопрос, я нашел решение. Я включил его как ответ.
У меня есть выражение с модулем в нем, которое нужно поместить в терминах x.
(a + x) mod m = b
Я не могу понять, что делать с модулем. Есть ли способ получить x сам по себе, или мне не повезло в этом?
редактировать: Я понимаю, что могу получить несколько ответов, но я ищу для ответа, который попадает в диапазон m.
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 в ожидаемый диапазон mod его с 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? или бесконечность других чисел?
обратный мод-это отношение, вы начинаете переходить к более сложной математике, если пытаетесь преследовать это. Если вы в Haskell можно easilyish модель с не-детерминизм (бесконечный список возможных ответов)
кроме того, это не вопрос программирования. проверьте математический обмен.
хитрая часть этого уравнения заключается в том, что даже если вы знаете a, m и b, вы не можете окончательно выяснить x.
например, скажем, ваше уравнение было:
(2 + x) % 4 = 3
x смогло быть 1, 5, 9, 13 etc.
это означает, что вам не повезло, нет никакого способа получить x сам по себе.
у меня есть это уравнение для обратного модуля если у нас есть
(var1 +var2) mod num=Res
потом
var1= num-((Res-var2)*-1)
например 25+5mod26=4
var1=26-((4-5)*-1)
var1=26-1
var1=5