将较大的自然数除以其他自然数的最快方法是什么?
在下面的C ++片段中,我相信我已经实现了基于二进制的长分区:
Num operator/(const Num& num1,const Num& num2)
{
Num res = 0;
Num tmp1 = num1;
unsigned int tmp1Len = tmp1.BitCount();
unsigned int num2Len = num2.BitCount();
while (tmp1Len > num2Len)
{
res += (Num)1<<(tmp1Len-num2Len-1);
tmp1 -= num2<<(tmp1Len-num2Len-1);
tmp1Len = tmp1.BitCount();
}
if (tmp1 >= num2)
return res+1;
return res;
}
类Num
支持所有必要的算术运算符和逻辑比较器。
答案不一定是C ++(一般方法也会受到赞赏)。
有没有更快的方法呢?
由于