n = 2
a = [0]*2
m = [0]*2
def exgcd(a, b):
if 0 == b:
return 1, 0, a
x, y, q = exgcd(b, a % b)
x, y = y, (x - a // b * y)
return x, y, q
def CRT():
if n == 1 :
if m[0] > a[0]:
return a[0]
else:
return -1
for i in range(n):
if m[i] <= a[i] :
return -1
x, y, d = exgcd(m[0], m[i])
if (a[i] - a[0]) % d != 0:
return -1
t = m[i] // d
x = (a[i] - a[0]) // d * x % t
a[0] = x * m[0] + a[0]
m[0] = m[0] * m[i] // d
a[0] = (a[0] % m[0] + m[0]) % m[0]
return a[0]
k = 10
m = [0x61707478,0x34383639]
a = [0x247346f8 , 0x22f3fa31]
ans = CRT()
print(hex(ans))
#31ce29d1 30d01980
#f892190 1f99c58b
#247346f8 22f3fa31
中国剩余定理解同余方程python代码
最新推荐文章于 2023-03-21 20:27:57 发布