大整数除法 - Knuth 算法 D
Posted
技术标签:
【中文标题】大整数除法 - Knuth 算法 D【英文标题】:Large Integer Division - Knuth's Algorithm 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 试图弄明白。 【参考方案1】:在 D1 你有d=1
,所以设置
n[]=0,7,4,8,3,9,2,3,4
n = 5
,m = 3
。
另外,步骤D4有一个形式错误:(第二行)应该是...
minus q(hat) times (v1, v2, ..., vn)b TIMES b ** (m - j)
。
这里,** 表示“力量”(便于书写的 Fortran 风格)。当然,这里是b = 10
,所以
times b ** (m - j)
将减数左移到合适的位置进行减法。
【讨论】:
以上是关于大整数除法 - Knuth 算法 D的主要内容,如果未能解决你的问题,请参考以下文章