web-dev-qa-db-ja.com

逆モジュラス演算子

質問をしてから3年以上経って、解決策を見つけました。 answerとして含めました

モジュラスを含む式があり、xで表す必要があります。

(a + x)mod m = b

モジュラスをどうするかわかりません。 xを単独で取得する方法はありますか、それとも私はこれに運がありませんか?

Edit:複数の回答が得られることはわかっていますが、mの範囲に収まる回答を探しています。

29

私はこの質問を再検討し、@ 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_と表示されます。

20

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
11
Gorcha

うん。あなたはめちゃくちゃです。

例:

5 mod 3 = 2
8 mod 3 = 2

だから逆mod 2は何ですか? 8または5?または11?または他の数の無限大?

逆modは関係であり、これを追求しようとすると、よりトリッキーな数学が得られ始めます。 haskellを使用している場合は、非決定論(可能な回答の無限リスト)で簡単にモデル化できます。

また、これは実際にはプログラミングの質問ではありません。数学交換をご覧ください。

4
TheIronKnuckle

私たちが持っている場合、私はこの方程式を持っています

(var1 +var2) mod num=Res

その後、取得する

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

例えば25+5mod26=4

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

この方程式の注意点は、a、m、bを知っていても、xを最終的に把握できないことです。

たとえば、方程式が次のようだったとします。

(2 + x) % 4 = 3

xは1、5、9、13などです。

これは、運が悪いことを意味し、xを単独で取得する方法はありません。

1
Andrew Clark