簡體   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