Algorithm 任意基数除法的整数,不转换为基数10

Algorithm 任意基数除法的整数,不转换为基数10,algorithm,division,base,integer-division,Algorithm,Division,Base,Integer Division,整数表示为整数列表,例如: [13,2](基16中的D2) [1,3,6](基数10中的136) 我们只允许单独使用数字,它们不能转换为以10为基数的整数 我想用“纸和笔”的方式实现除法,也就是长除法,但结果是 它要求除数和被除数前缀必须是以10为基数的整数,才能执行以10为基数的整数除法 例如: 要找到11131/117,我们需要先找到1113/117 有没有办法将像1113/117这样的除法分解成更小的步骤,除了除法在一个闭合范围[1,base-1]之外,不需要任何除法? 有没有其他方法

整数表示为整数列表,例如:

  • [13,2](基16中的D2)
  • [1,3,6](基数10中的136)
我们只允许单独使用数字,它们不能转换为以10为基数的整数

我想用“纸和笔”的方式实现除法,也就是长除法,但结果是 它要求除数和被除数前缀必须是以10为基数的整数,才能执行以10为基数的整数除法

例如: 要找到11131/117,我们需要先找到1113/117

有没有办法将像1113/117这样的除法分解成更小的步骤,除了除法在一个闭合范围[1,base-1]之外,不需要任何除法?


有没有其他方法可以不用“纸笔”进行除法?

您需要能够做的事情:减法、比较、将一个多位数乘以一个单位数。要在基数B中查找
1113/117
,请在[1,B-1]范围内执行二进制搜索。对于每次尝试,将117乘以候选数字,并与1113进行比较。在找到最大的数字D后,
117*D不需要以10为基数除法。纸张和养老金在任何地方都是一样的。@user58697我想你没有抓住我问题的关键。我不能用[1,base-1]之外的除数独立于基数执行任何除法,因为这需要我将整数列表转换为单个数字,这是不允许的。除bit外,Base 10除法也是典型int实现中唯一可用的除法shifts@user3386109我正在寻找一个更“直接”的解决方案,但你提出的方案实际上是正确的,所以谢谢你,我不明白基数10在这个问题上的意义。大多数计算机以2为基数表示数字。