【问题标题】:Large Integer Division - Knuth's Algorithm D大整数除法 - Knuth 算法 D
【发布时间】:2013-04-18 04:20:58
【问题描述】:

我必须使用 Knuth 算法 D(编程艺术第 2 卷)使用大整数除法将任何数字(无论大小)除以另一个数字,例如 74839234 除以 72548

我做了两个数组来表示这些数字

n[] = {7,4,8,3,9,2,3,4}
d[] = {7,2,5,4,8}

我试图得到这样的输出:

q[] = {1,0,3,1}
r[] = {4,2,2,4,6}

我真的不知道从哪里开始。任何帮助或指导将不胜感激!

【问题讨论】:

  • 用英文说明写出你被指示使用的算法,例如你会如何告诉一个人去做。识别编程结构,如 for 循环以及其中的 if 和 while。重写为伪代码。然后,将其重写为代码。
  • 哪种编程语言?
  • 我在理解算法时遇到了一些问题。因此,当伪代码时,我不知道从哪里开始。我一直在玩 excel 试图弄明白。

标签: c++ integer-division


【解决方案1】:

在 D1 你有d=1,所以设置

n[]={0,7,4,8,3,9,2,3,4}

n = 5m = 3

另外,步骤D4有一个形式错误:(第二行)应该是...

minus q(hat) times (v1, v2, ..., vn)b TIMES b ** (m - j)

这里,** 表示“力量”(便于书写的 Fortran 风格)。当然,这里是b = 10,所以

times b ** (m - j) 将减数左移到合适的位置进行减法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-21
    • 2011-07-03
    • 1970-01-01
    • 2014-05-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多