3年以上提出的问题后,我找到了解决办法。 我已经包括它作为一个答案 。
我与它模量,需要放在x的方面的表示。
(A + X)模m = B
我想不出什么用的模做。 有没有办法通过自身得到的x,还是我的运气就这一个?
编辑 :我知道我可以得到多个答案,但我找m的范围内,落在一个答案。
3年以上提出的问题后,我找到了解决办法。 我已经包括它作为一个答案 。
我与它模量,需要放在x的方面的表示。
(A + X)模m = B
我想不出什么用的模做。 有没有办法通过自身得到的x,还是我的运气就这一个?
编辑 :我知道我可以得到多个答案,但我找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,小于微米。 为了得到-23回到预期范围MOD将其与29,这给6.虽然在问题没有指定此给出0和m之间的值。
最终的溶液变为: x = (b - a) mod m
IE
(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是你可以easilyish它与非决定论模型(可能的答案的无限名单)
此外,这是不是一个真正的编程问题。 检查出的数学交流。
这个公式棘手的部分是,即使你知道,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