Algorithm 求解“中的x”;xy+;z≡;0(k型)";

Algorithm 求解“中的x”;xy+;z≡;0(k型)";,algorithm,modulo,Algorithm,Modulo,我需要解同余关系中的x xy+z≡ 0(模块k) 其中y、z和k是已知的。(k可能不是素数。) 有没有比只测试从0到k-1的所有值更好的算法 我尝试使用数论,得到了以下结果: xy≡ -z(模块k) x≡ -z·(逆(y)%k)(模k) 但我在某些情况下得到了错误的结果。例如,如果k=728,x=272,y=344,z=344,则原始关系成立(因为272·344+344=129·728),但最后一个关系不成立。我做错了什么?您的解决方案失败,因为 当且仅当y和k是相对素数(即,如果gcd(y,k

我需要解同余关系中的x

xy+z≡ 0(模块k)

其中y、z和k是已知的。(k可能不是素数。)

有没有比只测试从0到k-1的所有值更好的算法

我尝试使用数论,得到了以下结果:

xy≡ -z(模块k)
x≡ -z·(逆(y)%k)(模k)


但我在某些情况下得到了错误的结果。例如,如果k=728,x=272,y=344,z=344,则原始关系成立(因为272·344+344=129·728),但最后一个关系不成立。我做错了什么?

您的解决方案失败,因为
当且仅当y和k是相对素数(即,如果gcd(y,k)=1)时,“y模k”的乘法逆才存在。
在您选择的示例中,
y
k
不是共素数
这里有另一个解决问题的方法

xy+z≡ 0(k型)
xy≡ -z(k型)
xy≡ -z+k(模k)
设k-z=b
xy≡ b(k型)

现在你们只需要解线性同余方程
对于给定的示例,解决方法如下所示

x*344+344≡ 0(mod 728)
x*344≡ -344(728型)
x*344≡ -344+728(k型)
x*344≡ 384(728型)

首先通过减少到x*43来解决此问题≡ 48(mod 91),然后使用扩展欧几里德算法将给出一般形式的解,如下所示:

90+91*t
x小于728的解决方案:901812723634545545636727


通过这种方式,您可以找到x的所有可能解决方案。

您的解决方案失败是因为
当且仅当y和k是相对素数(即,如果gcd(y,k)=1)时,“y模k”的乘法逆才存在。
在您选择的示例中,
y
k
不是共素数
这里有另一个解决问题的方法

xy+z≡ 0(k型)
xy≡ -z(k型)
xy≡ -z+k(模k)
设k-z=b
xy≡ b(k型)

现在你们只需要解线性同余方程
对于给定的示例,解决方法如下所示

x*344+344≡ 0(mod 728)
x*344≡ -344(728型)
x*344≡ -344+728(k型)
x*344≡ 384(728型)

首先通过减少到x*43来解决此问题≡ 48(mod 91),然后使用扩展欧几里德算法将给出一般形式的解,如下所示:

90+91*t
x小于728的解决方案:901812723634545545636727


通过这种方式,你可以找到x的所有可能解。

也许
((x*y)+z)mod k=0
(x*y)+z=0(mod k)
?实际上并不存在歧义,在数学方程中附加
mod k
意味着你谈论的是同余关系,而不是明确的“取k的余数”手术曾经发生过吗?我们总是认为
z
gcd(y,k)
的倍数,还是这仅仅是巧合?@harold不总是这样,但这可能适用于某些情况。这些事情在我的脑海里有点遥远,但这就是为什么它不起作用的原因。当且仅当x和k是互质时,逆存在。在你的情况下,他们不是。这意味着你必须依靠其他方法来解决这个方程。可能没有或有很多解决方案。为此,你必须把k分解成它的素因子分解,然后求解这些。然后,允许您从这些结果中重新构建结果。老实说,我总是在如何使用它的问题上感到困惑,但我知道这是一条路。也许
((x*y)+z)mod k=0
(x*y)+z=0(mod k)
?其实并不存在歧义,在数学方程中附加
mod k
意味着你在谈论同余关系,而不是明确的“用k取余数”手术曾经发生过吗?我们总是认为
z
gcd(y,k)
的倍数,还是这仅仅是巧合?@harold不总是这样,但这可能适用于某些情况。这些事情在我的脑海里有点遥远,但这就是为什么它不起作用的原因。当且仅当x和k是互质时,逆存在。在你的情况下,他们不是。这意味着你必须依靠其他方法来解决这个方程。可能没有或有很多解决方案。为此,你必须把k分解成它的素因子分解,然后求解这些。然后,允许您从这些结果中重新构建结果。老实说,我总是弄不清楚如何使用它,但我知道这是一条路。@user56036如果你把你的例子简化为x*43≡ 48(mod 91),其中gcd(43,91)是1,那么你也可以找到你的答案,因为在约化后43将有逆模91。@user56036如果你把你的例子约化为x*43≡ 48(mod 91),其中gcd(43,91)是1,那么你们也可以找到你们的答案,因为在约化后43将有逆模91。