以下算法背后的基本原理是什么:
从十进制转换为另一个基数的算法
令 n 为十进制数。
令 m 为我们要转换为的数字,最初为空。我们将从右到左编写它。
令 b 为我们要转换为的数字的底数。
重复直到 n 变为 0
n 除以 b,结果为 d,余数为 r。
将余数 r 写为 b 的最左边数字。
令 d 为 n 的新值。
最佳答案
声明:余数r
是结果的最后一位。
的确,分开n
分为两部分:可被 r
整除的部分和其余的。
我们得到 n = d * b + r
其中 0 <= r < b
.
在基地b
, 符号为 n = c_k * b^k + ... + c_1 * b^1 + c_0 * b^0
.
因为除了 c_0 * b^0
之外的所有内容可以被 b
整除, 平等 r = c_0
紧随其后。
对于剩余的数字,重写
n = c_k * b^k + ... + c_1 * b^1 + c_0 * b^0
作为
n = (c_k * b^{k-1} + ... + c_1 * b^0) * b + c_0 * b^0
.
另一方面,
n = d * b + r
.
紧随其后
d = c_k * b^{k-1} + ... + c_1 * b^0
.
因此,要找到除最后一位以外的所有数字,我们必须解决相同的问题,但对于 d < n
而不是 n
.
整体正确性现在可以通过 n
归纳得出.
关于algorithm - 将基数 10 转换为基数 X 的算法背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370818/