Я студент бакалавриата, который увлекается кодированием и столкнулся с проблемой, связанной с уравнением диофотона сегодня. Вопрос: для ax + by = c, где a, b, c - все положительные целые числа, найдите x, y, такие, что x и y - неотрицательные целые числа, а ax + by = c.
Я написал следующий код и попробовал 3x + 7y = 12, но выходит единственное решение: x = -24, y = 12, что на самом деле является решением, но x <0. Я не смог получить x = 4, y = 0 в качестве ответа в соответствии с требованием. </p>
def gcd(x,y):
if y == 0:
return x
else:
return gcd(y,x%y)
def solve(a,b,c):
d = gcd(a,b)
if c % d != 0:
output = 'there are no such integers'
return output
else:
q, r = divmod(a,b)
if r == 0:
return ([0, c/b])
else:
solution = cents(b, r, c)
u = solution[0]
v = solution[1]
return ([v, u - v * q])
s = u - v * q
while v < 0 or s < 0:
v = v + b/gcd(a,b)
s = s - a/gcd(a,b)
continue
while v >= 0 and s >= 0:
return ([v,s])
a = int(input("a in a*x + b*y = c:"))
b = int(input("b in a*x + b*y = c:"))
c = int(input("c in a*x + b*y = c:"))
print(solve(a,b,c))
Вывод:
a in a*x + b*y = c:3
b in a*x + b*y = c:7
c in a*x + b*y = c:12
[-24, 12]
Но для этого вопроса мне бы хотелось, чтобы это было x = 4, y = 0. Более того, что мне делать, если я хочу получить конкретный x, y и убедиться, что для этой пары x, y, x + у наименьший возможный? Заранее спасибо!