python解一次不定方程linear Diophantus Equation
话不多说,上代码:
def gcd(a,b): #最大公约
r=a%b
if r==0:
return b
else:
return gcd(b,r)
def LDE(a,b):#先求a‘x+b’y=1 (a',b')=1
if b==1:
return 0,1
x2, y2 = LDE(b, a % b)
x = y2
y = x2 - a // b * y2
return x, y
def LDE2(a,b,c): #ax+by=c 返回x,y
d=gcd(a,b)
#print(d)
if c%d!=0:
print("无整数解")
return
a2=a/d;b2=b/d
x3,y3=LDE(a2,b2)
return x3*c/d,y3*c/d
print(LDE2(23,-76,3)) #(-99.0, -30.0)
可以练习递归算法