Math 函数的反转模式?

Math 函数的反转模式?,math,mod,Math,Mod,我试图解决这个方程: (b(ax+b ) - c) % n = e 除了x 我尝试了以下方法: (A + x) % B = C (B + C - A) % B = x 其中,A是(-c),然后手动求解x,但我没有得到正确的输出。我可能需要使用eea吗?任何帮助都将不胜感激!我知道有人问过这个问题,我尝试过他们的解决方案,但对我来说不起作用。你用什么语言做这个,变量是常量吗? 以下是一种快速确定Java中x可能值的方法: for (int x = -1000; x < 1000; x+

我试图解决这个方程:

(b(ax+b ) - c) % n = e 
除了
x
我尝试了以下方法:

(A + x) % B = C
(B + C - A) % B = x

其中,
A
(-c)
,然后手动求解
x
,但我没有得到正确的输出。我可能需要使用eea吗?任何帮助都将不胜感激!我知道有人问过这个问题,我尝试过他们的解决方案,但对我来说不起作用。

你用什么语言做这个,变量是常量吗? 以下是一种快速确定Java中x可能值的方法:

for (int x = -1000; x < 1000; x++){
    if ((b*((a*x)+b) - c) % n == e){
    System.out.println(x);
    }
}
for(int x=-1000;x<1000;x++){
如果((b*((a*x)+b)-c)%n==e){
系统输出println(x);
}
}
(b*(a*x+b)-c)%n=e

可以重写为:

(b*a*x) % n = (e - b*b + c) % n
x = ((e - b*b + c) * modular_inverse(b*a, n)) % n
其中,
u
模逆(u,n)
,是一个
v
的数字,使得
u*v%n==1
。有关计算模逆的代码,请参阅

一些警告:

  • 当简化模方程时,你们永远不能简单地除法,你们需要和模逆相乘
  • 没有直接的公式来计算模逆,但是有一个简单、快速的算法来计算模逆,类似于计算模逆
  • 模逆并不总是存在的
  • 根据编程语言的不同,当一个或两个参数为负时,模运算的结果也可能为负
  • 由于每个解决方案适用于每个
    x
    n
    ,对于较小的
    n
    ,只需测试
    0
    n-1
    之间的数字,因此在许多情况下,简单的循环就足够了