1、用b = B^l + m去除a = (a_{s - 1}a_{s - 2}…a_1a_0)_B,描述除法过程,以及用b = B^l - m去除a的过程。
当用 $ b = B^l + m $ 去除 $ a $ 时,若 $ l \geqslant s $,则 $ a < b $,除法完成;否则,将 $ m $ 乘以 $ a_{s - 1} $ 得到双精度字 $ (h\ l)_B $。
对于 $ l \geq 2 $,$ a_{s - 1}B^{s - 1 - l} b $ 的第 $ (s - 1) $ 个字节是 $ a_{s - 1} $,将商的第 $ (s - 1 - l) $ 个字节设为 $ a_{s - 1} $,把 $ a_{s - 1} $ 置为 0,从 $ a $ 的第 $ (s - l) $ 和第 $ (s - 1 - l) $ 个字节中减去 $ h $ 和 $ l $ 并进行借位调整。
若借位最终未被吸收,将 $ B^{s - 1 - l} b $ 加到负差值上,并从商的第 $ (s - 1 - l) $ 个字节减 1。
此时 $ a $ 变为
$$ a’ = (a’ {s’ - 1}a’ {s’ - 2}\ldots a’ 1a’_0)_B $$
其中 $ s’ = s - 1 $,重复上述步骤将 $ a’ {s’ - 1} $ 减为 0,持续此过程直到 $ a < b $,该值即为余数。
当用 $ b = B^l - m $ 去除 $ a $ 时,将 $ h $ 和 $ l $(而非相减)加到 $ a $ 的第 $ (s - l) $ 和第 $ (s - 1 - l) $ 个字节上并进行进位调整,这种情况下 $ a $ 不会为负,无需将 $ b $ 加到中间结果为负的 $ a $ 上。
2、(a) 对于范围 2 ⩽ i ⩽ k + 1 内的每个 i,有 ri−2 = qiri−1 + ri。证明 r1 ⩾ Fk+1 且 r0 ⩾ Fk+2。(b) 计算 ri = ri−2 rem ri−1,其中 0 ⩽ ri ⩽ ri−1 - 1。如果 ri > 1/2ri−1,用 ri−1 - ri 替换 ri。证明此变体的正确性。(c) 比较原始欧几里得算法的迭代次数 k 和修改后算法的迭代次数 k′。
(a) 因为 $ r_{i-2} > r_{i-1} $,所以 $ q_i \geqslant 1 $,进而 $ r_{i-2} \geqslant r_{i-1} + r_i $。已知 $ r_k \ne 0 $,即 $ r_k \geqslant 1 = F_2 $,且 $ r_{k-1} > r_k $,即 $ r_{k-1} \geqslant 2 = F_3 $。由此可得:
$$
r_{k-2} \geqslant r_{k-1} + r_k \geqslant F_3 + F_2 = F_4,
$$
$$
r_{k-3} \geqslant r_{k-2} + r_{k-1} \geqslant F_4 + F_3 = F_5,
$$
依此类推,可证明 $ r_1 \geqslant F_{k+1} $,$ r_0 \geqslant F_{k+

最低0.47元/天 解锁文章
1306

被折叠的 条评论
为什么被折叠?



