什么是疯狂大整数划分的最快算法?

时间:2013-06-26 12:10:52

标签: algorithm math byte division digit

我需要将字节数组中以数字表示的数字除以非标准字节数。它可能是5个字节或1 GB或更多。应使用表示为字节数组的数字进行除法,而不对数字进行任何转换。

2 个答案:

答案 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上的方式涵盖了所有这些以及更多内容。