2

我正在尝试实现一个将两个大精度数字相除的程序(我将它们作为字符串)。Stack Overflow 上其他问题的人建议实现 Donald Knuth 的计算机编程艺术一书中解释的算法。在阅读时,我对算法有了一个大致的了解,但我在某些部分感到困惑。

  1. 该算法使用了学校的长除法概念。我不明白程序在执行算法时如何“猜测”商的数字。

  2. 即使它“猜测”,我应该如何将股息的部分分配给除数?假设我必须将除数转换为整数......

  3. ...如果除数很大怎么办?问题不是一成不变的吗?

任何帮助将不胜感激。

提前致谢。

4

1 回答 1

3

我只能建议,除法可以通过取除数和除数之间的数字来实现。然后将除法器与基于数字差异的一些猜测相乘并对其进行更改,直到获得所需的输出。是的,如果计算非常大的数据,您必须编写自己的加法、多重函数并使用数组。

更新 按基本术语提示。假设,1923/695 为 |695| = 3,取除数的前3位并尝试除法。由于 193<695 加上商 0 并在除数上再加一位数。现在我们必须将 1923 除以 695。这个算法的一个优点是您每次都必须猜测 1-9 之间的数字。为了优化和减少猜测的数量,您可以实现 if 条件,例如,如果除数大于除数 *5,您的猜测将是 6、7、8 和 9。等等。

我以前用这种方法计算大数的阶乘。希望这对你也有帮助。

于 2013-05-08T23:51:55.937 回答