划分大整数的最快方法

时间:2014-10-09 10:44:45

标签: c++ algorithm integer-division

将较大的自然数除以其他自然数的最快方法是什么?

在下面的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 ++(一般方法也会受到赞赏)。

有没有更快的方法呢?

由于

0 个答案:

没有答案