找到 = x (mod m)
的解决方案数量
答案 0 :(得分:2)
让p
和q
成为素数。
如果因子是互质的,则可以将模块化方程分解为单独的方程。
这意味着**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