繁体   English   中英

欧氏除法算法的余数

[英]Remainder of euclidean division algorithm

我在自己的BigInteger库中使用JavaScript,但mod函数的复杂性存在问题。

// r = big1 - (big2 * (big1/big2))
function mod(big1, big2){
return subs(big1, multiply(big2, divide(big1,big2))); 
}

// r = b1%b2

另一种方法是按部分操作模数(例如,您对数字的限制是每个数字9个数字,并且说b2 <100):

  1. 从b1的最左位数开始,使用前9位数字构造一个数字,并将其命名为N。
  2. 计算N mod b2,得出的结果范围为00到99(请记住示例是b2 <100)。
  3. 通过将上述结果(第2步)与b1的后7位数字连接起来,构造一个新的9位数字N。 如果b1中剩余的位数少于7位,但至少有1位,则根据上述结果(步骤2)构造一个新的N,该位数将少于9位(步骤2),然后是b1的其余位数
  4. 重复步骤2-3,直到b1的所有数字都已处理

最终结果是b1%b2。 如果b2也很大,这将不起作用,但是如果仅b1非常大,则出于算法目的,您可以将其视为字符串。

使用迭代进行编码应该很容易,因为您可以事先知道迭代的次数,甚至不需要递归。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM