大整数划分 - Knuth算法D.

时间:2013-04-18 04:20:58

标签: c++ integer-division

我必须使用Knuth算法D(编程第2卷的艺术)使用大整数除法将任意数字(无论大小)除以另一个数字,例如7483923472548。< / p>

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

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}

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

1 个答案:

答案 0 :(得分: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)将减数向左移动到适当的减法位置。