[英]How to divide large numbers and what algorithm to use
我想操縱真正的大數字,我正在嘗試使用數組。 我已經實現了乘法運算,但現在我想實現除法運算。
我想知道我應該使用哪種算法? 是否可以使用Newton-Raphson除法算法,或者我應該使用我們在學校學到的算法?
PS:我知道有很多圖書館可以使用大數字,但我想這樣做是為了練習。
這些是我最喜歡的算法:
二進制分裂
看這里: http : //courses.cs.vt.edu/~cs1104/BuildingBlocks/divide.030.html
這是你應該開始的。 它不是那么慢而且很簡單。 在開始之前+, -, <<, >>
不要忘記正確測試你的+, -, <<, >>
操作。 他們應該在任何給定的輸入上完美地工作
算術分為半數位
請看這里: https : //stackoverflow.com/a/19381045/2521214
只需稍加調整即可將其調整為數組。 使用+, -, *, /, %
。 如果你正確編碼它應該比二進制除法快得多。
近似分裂
請看這里: https : //stackoverflow.com/a/18398246/2521214
或者對於某些加速x ^ 2,x * y這里: 快速bignum平方計算
這更適合浮動/定點分割。 這有點難以理解,但速度和准確性值得一試。 此外,還有許多其他近似算法,所以谷歌!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.