javascript – 如何实现(快速)bigint划分?

我正在制作自己的BigInt类,通过将数字分成7位数字。 (即基数为10,000,000)

我实现了加法,减法和乘法,现在我正在实施除法和mod。我写了一个代码,通过长划分(通过划分最高有效位数来估计数字)进行分割,并且它的工作原理。

但是,这太慢了。当我测试108位数字和67位数字的操作时,计算除法需要1.9ms,比其他操作慢得多(0.007〜0.008ms计算加法/减法,0.1ms计算乘法)。

像快速乘法的Karatsuba和FFT算法一样,算法存在什么算法? Wikipedia演示了一些分割算法(它计算除数的乘法反数,并将其与股息相乘),但是我认为这并不能帮助我实施分割。我读了“大整数方法”部分,但也不帮助我… 🙁

大整数算术的标准参考是Donald Knuth的“计算机编程艺术”第2卷第4.3节。他的划分算法基本上是年级学习算法,有一些小的改进。

顺便说一下,实施大整数算术的most people使用两个幂而不是十的幂作为其数字系统的基数。

http://stackoverflow.com/questions/8883567/how-to-implement-fast-bigint-division

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如何实现(快速)bigint划分?