我正在尝试解决这个问题:
(b(ax+b ) - c) % n = e
除x
外,所有内容均已给出
我尝试了:
(A + x) % B = C
(B + C - A) % B = x
其中A
是(-c)
,然后根据我的其他子记录手动求解x
,但是我没有得到正确的输出。我可能需要使用eea吗?任何帮助,将不胜感激!我知道有人问过这个问题,我尝试了他们的解决方案,但对我不起作用。
答案 0 :(得分:4)
(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
的{{3}} modular_inverse(u, n)
是一个数字v
,使得u*v % n == 1
。有关计算模逆的代码,请参见modular inverse。
一些警告:
x
模n
,因此对于小n
,只需测试从0
到n-1
的数字,因此在许多情况下,一个简单的循环就足够了。答案 1 :(得分:0)
您使用的是哪种语言,变量是否恒定? 这是确定Java中x可能值的快速方法:
for (int x = -1000; x < 1000; x++){
if ((b*((a*x)+b) - c) % n == e){
System.out.println(x);
}
}