Math 线性丢番图方程,扩展欧氏算法

Math 线性丢番图方程,扩展欧氏算法,math,diophantine,Math,Diophantine,假设我想找到x和y的任意值,使它们满足x。W+y。D=P 这可以通过以下使用扩展欧几里德算法来实现 但这只是一些满足方程的随机x和y 假设我添加一个额外的约束,我想要任何x y z,这样 x>=0 y>=0 z>=0 and x + y + z = n 我如何才能有效地共享代码/伪代码,如果可能的话,找到所有这样的x y和z 我的问题归结为使用扩展的欧几里德算法求任意的x和y 1满足一个线性方程 2在给定范围内 我们有2个方程和3个未知数,做一些简单的数学,我们可以找到需要解

假设我想找到x和y的任意值,使它们满足x。W+y。D=P

这可以通过以下使用扩展欧几里德算法来实现

但这只是一些满足方程的随机x和y

假设我添加一个额外的约束,我想要任何x y z,这样

x>=0 y>=0 z>=0 and x + y + z = n
我如何才能有效地共享代码/伪代码,如果可能的话,找到所有这样的x y和z

我的问题归结为使用扩展的欧几里德算法求任意的x和y

1满足一个线性方程

2在给定范围内


我们有2个方程和3个未知数,做一些简单的数学,我们可以找到需要解的方程

x * W + y * D + z * 0 = p

给定

x,y,z >=0
首先,我们将通过循环任何一个未知数,比如z,来减少一个未知数

我们对z迭代0-n,我们的新方程将

x * w + y * d = p

现在我们有两个方程和两个未知数

所以我们对x和y的解现在可以通过在第一个方程中替换x来减少

所以

(m - y) * w + y * d = p
这可以归结为

y = (p - m * w) / (d - w)


可以在第一个值处停止,其中x和y是整数

公式中的z在哪里?可以找到任意值x和y,使其总和不超过n。这就是我的意思。据我所知,有2个方程式和3个未知数,x*赢+y*抽+z*输=分,x+y+z=n;你必须通过减少一个未知变量来减少一个变量,你可以求解这个方程;你可以添加一个方法来猜测z的值,然后求解x&y,这将导致最坏的时间n*求解x&yyes方程的复杂性这就是我要问的,我从0到n迭代所有z,然后hw,我是否得到所有x-y对应于z的特定值??就像我知道一个满足方程ax+by=c的随机值,现在我如何得到x和y的对应值,使得x+y=n?
x + y = m   { m is n - z for value of z in current iteration
(m - y) * w + y * d = p
y = (p - m * w) / (d - w)
x = m - y