簡體   English   中英

如何划分大數和使用什么算法

[英]How to divide large numbers and what algorithm to use

我想操縱真正的大數字,我正在嘗試使用數組。 我已經實現了乘法運算,但現在我想實現除法運算。

我想知道我應該使用哪種算法? 是否可以使用Newton-Raphson除法算法,或者我應該使用我們在學校學到的算法?

PS:我知道有很多圖書館可以使用大數字,但我想這樣做是為了練習。

這些是我最喜歡的算法:

  1. 二進制分裂
    看這里: http//courses.cs.vt.edu/~cs1104/BuildingBlocks/divide.030.html
    這是你應該開始的。 它不是那么慢而且很簡單。 在開始之前+, -, <<, >>不要忘記正確測試你的+, -, <<, >>操作。 他們應該在任何給定的輸入上完美地工作

  2. 算術分為半數位
    請看這里: https//stackoverflow.com/a/19381045/2521214
    只需稍加調整即可將其調整為數組。 使用+, -, *, /, % 如果你正確編碼它應該比二進制除法快得多。

  3. 近似分裂
    請看這里: https//stackoverflow.com/a/18398246/2521214
    或者對於某些加速x ^ 2,x * y這里: 快速bignum平方計算
    這更適合浮動/定點分割。 這有點難以理解,但速度和准確性值得一試。 此外,還有許多其他近似算法,所以谷歌!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM