如何找到模数方程的解数?

时间:2019-02-13 19:45:21

标签: modular-arithmetic

找到 = x (mod m)的解决方案数量

1 个答案:

答案 0 :(得分:2)

pq成为素数。

如果因子是互质的,则可以将模块化方程分解为单独的方程。

这意味着**2 = x (mod m)等效于**2 = x (mod p)**2 = x (mod q)

每个都可以分解为x(x-1)=0 => x=0 or x=1

因此,您知道x是0或1模p,x是0或1模q。根据中文余数定理,每个选择具有1个模m的解,因此将有4个解。

2很容易(x = 0和x = 1)。可以通过扩展的欧几里得算法找到另外两个,如下:

def egcd(a, b):
    x,y = 0,1
    lx,ly = 1,0
    while b != 0:
        q = a/b
        (a, b) = (b, a%b)
        (lx, x) = (x, lx-q*x)
        (ly, y) = (y, ly-q*y)        
    return (lx, ly)

p=7
q=11
m=p*q
(lx, ly) = egcd(p,q)
print lx*p%m,ly*q%m