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