对同余方程ax ≡ b (mod m)求解的python代码如下:
#求最大公因数
def gcd(x,y):
if y==0:
return x
return gcd(y,x%y)
def solve(a,b,mod):
n=gcd(a,m)
i=mod//a
ans=[]
while(1):#穷举
ax=a*i
if (ax-b)%mod==0:
break
i+=1
for j in range(n):
ans.append(i+j*m//n)
return ans
a=6
b=15
m=79867718455825714798781746931550165303416313
n=gcd(a, m)
if b%n!=0:
print("该同余方程无解")
else:
ans=solve(a, b, m)
print("方程解为:")
ax=''
for x in range(n-1):
ax+=str(ans[x])+', '
ax+=str(ans[n-1])
print("x ≡ %s (mod %d)"%(ax,m))