分数大

时间:2012-02-13 08:44:21

标签: biginteger division

除了学校方法之外,还有更快的方法来划分大整数(1000位或更多位数)吗?

1 个答案:

答案 0 :(得分:5)

维基百科列出multiple division algorithms。请参阅Computational complexity of mathematical operations,其中Schoolbook long division列为O(n^2)Newton's method列为M(n),其中M是所用乘法算法的复杂程度,可以是好于O(n log n 2^( log* n))渐近。

one of the multiplication algorithms的讨论中注意到渐近的最佳算法不一定是“小”输入的最快算法:

  

在实践中,Schönhage-Strassen算法开始优于旧方法,例如Karatsuba和Toom-Cook乘法,数字超过2 ^(2 ^ 15)到2 ^(2 ^ 17)(10,000到40,000十进制数字)。 GNU多精度库使用它作为至少1728到7808个64位字(111,000到500,000十进制数字)的值,具体取决于体系结构。 Schönhage-Strassen有一个Java实现,它使用它超过74,000个十进制数字。