编写一个算法,将十进制的非负整数n转换 为另一个基为b的b进制数
时间: 2023-08-09 12:01:16 浏览: 102
Decimal to Binary Table: 简单的代码来获取从 0 到 2^n 的数字作为二进制系统-matlab开发
要编写一个算法将十进制的非负整数n转换为基为b的b进制数,可以使用除法取余法来实现。
首先,将n除以b,得到的商再次除以b,依此类推,直到商为0为止。在每一步中,将得到的余数作为b进制数的一位,并且将商作为下一次除法运算的被除数。
最后,将得到的余数按照从后向前的顺序排列,即为转换后的b进制数。
下面是一个示例算法:
1. 初始化一个空字符串result,用于保存最终的b进制数结果。
2. 用n除以b,得到商q和余数r。
3. 将r转换为字符,并追加到result的前面。
4. 将n更新为q。
5. 如果q大于0,返回步骤2;否则,跳到步骤6。
6. 返回result作为结果。
这个算法的时间复杂度为O(logb(n)),其中b为进制数的基,n为十进制数。
例如,将十进制数19转换为二进制数,按照上述算法的步骤:
1. 初始时,result为空。
2. 19除以2得到商9,余数1。
3. 将余数1转换为字符'1',追加到result前面。
4. 更新n为9。
5. 9除以2得到商4,余数1。
6. 将余数1转换为字符'1',追加到result前面。
7. 更新n为4。
8. 4除以2得到商2,余数0。
9. 将余数0转换为字符'0',追加到result前面。
10. 更新n为2。
11. 2除以2得到商1,余数0。
12. 将余数0转换为字符'0',追加到result前面。
13. 更新n为1。
14. 1除以2得到商0,余数1。
15. 将余数1转换为字符'1',追加到result前面。
16. 更新n为0。
17. 返回result为'10011',即十进制数19的二进制表示。
因此,算法成功将十进制的非负整数n转换为基为b的b进制数。
阅读全文