gpt4 book ai didi

java - 在java中使用欧几里得算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:24 26 4
gpt4 key购买 nike

如果我有 x= 11y = 6 并且我想计算(w*x)mod(y) = 1。换句话说,我如何计算乘以 11 然后对结果 1 取模 6 的数字。在这种情况下,w 应该等于 5。无论如何我可以在java中使用欧几里德算法计算w?谢谢!

最佳答案

有一个定理说线性同余a * x = b (mod n),其中a, b, and n 是整数,有一个解决方案当且仅当 gcd(a, n) = 1

因为 gcd(11,6) = 1,这只是因为 11 是质数,所以你的方程确实是可解的。

要回答这个问题,不,您不能使用欧几里得算法解决线性同余---但是,您可以使用扩展欧几里得算法来解决这个问题---,但您可以使用它来验证方程是否可解。

一旦找到 gcd(a,n)=1,您就可以将解计算为 x = b*r mod n,其中 r = a ^-1 (mod n)。要计算 a 的逆函数(我们在这里表示为 r),您可以使用扩展欧几里德算法(缩写为 EEA)。

如果 gcd(a,n)=1,则给定 an,EEA 计算 rs 使得 a*r + n*s = 1。我们声称 ran 的逆。一旦你有了 r,你就可以计算 x = b * r mod n

Cormen 等人在算法导论一书中很好地描述了这些算法。

关于java - 在java中使用欧几里得算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37419327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com