我需要将字节数组中以数字表示的数字除以非标准字节数。它可能是5个字节或1 GB或更多。应使用表示为字节数组的数字进行除法,而不对数字进行任何转换。
答案 0 :(得分:13)
对于真正的大整数,分而治之师比教科书方法快得多。
GMP是一个最先进的大号码库。对于几乎所有事情,它有几种不同算法的实现,每种算法都针对特定的操作数大小进行了调整。
Here是GMP的“分区算法”文档。算法描述有点简洁,但是当你想要了解更多时,它们至少会给你一些谷歌。
Brent and Zimmermann's Modern Computer Arithmetic是一本关于大数算术的理论和实现的好书。如果你想知道已知的东西,可能值得一读。
答案 1 :(得分:9)
标准长除法算法类似于小学长除法,是算法D 在Knuth 4.3.1中描述的。 Knuth在他的书的那一部分对分裂进行了广泛的讨论。这样做的结果是,有比算法D更快的方法,但它们的速度并不快,而且它们比算法D复杂得多。
如果您决定使用最快的算法,则可以采用所谓的SRT算法。
维基百科Division Algorithm上的方式涵盖了所有这些以及更多内容。