有什么方法可以将十进制数更改为三进制数?我的意思是我不想使用模和除法,我有非常大的十进制数,比如 128123832812381835828638486384863486.............1237127317237 等等。
也不想使用 bigints。
有什么方法吗?
您不必使用除法/模数。相反,迭代输入数字,从低到高。对于每个数字位置,首先计算1000....000
输出表示中的内容(它是前一个 10 的幂的 10 倍)。然后将该结果乘以数字,并累积到输出表示中。
您将需要在输出表示中执行乘法和加法的例程。乘法例程可以写成加法例程。
例子:
将 246(base-10)转换为 base-3。
首先初始化输出“累加器” a = "0"
。
初始化“乘数” m = "1"
。
另请注意,10"101"
在输出表示中。
第一个数字是 6,即d = "20"
。
t = d * m = "20" * "1" = "20"
。a = a + t = "0" + "20" = "20"
。m = m * "101" = "1" * "101" = "101"
。第二个数字是 4,即d = "11"
。
t = d * m = "11" * "101" = "1111"
。a = a + t = "20" + "1111" = "1201"
。m = m * "101" = "101" * "101" = "10201"
。第三个数字是 2,即d = "2"
。
t = d * m = "2" * "10201" = "21102"
。a = a + t = "1201" + "21102" = "100010"
。所以答案是"100010"
。