質問をしてから3年以上経って、解決策を見つけました。 answer 。として含めました
モジュラスを含む式があり、xで表す必要があります。
(a + x)mod m = b
モジュラスをどうするかわかりません。 xを単独で取得する方法はありますか、それとも私はこれに運がありませんか?
Edit:複数の回答が得られることはわかっていますが、mの範囲に収まる回答を探しています。
私はこの質問を再検討し、@ 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
I.E.
_(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
だから逆mod 2は何ですか? 8または5?または11?または他の数の無限大?
逆modは関係であり、これを追求しようとすると、よりトリッキーな数学が得られ始めます。 haskellを使用している場合は、非決定論(可能な回答の無限リスト)で簡単にモデル化できます。
また、これは実際にはプログラミングの質問ではありません。数学交換をご覧ください。
私たちが持っている場合、私はこの方程式を持っています
(var1 +var2) mod num=Res
その後、取得する
var1= num-((Res-var2)*-1)
例えば25+5mod26=4
var1=26-((4-5)*-1)
var1=26-1
var1=5
この方程式の注意点は、a、m、bを知っていても、xを最終的に把握できないことです。
たとえば、方程式が次のようだったとします。
(2 + x) % 4 = 3
xは1、5、9、13などです。
これは、運が悪いことを意味し、xを単独で取得する方法はありません。