Как быстрее всего разделить большое натуральное число на другое натуральное число?
В следующем фрагменте 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
поддерживает все необходимые арифметические операторы и логические компараторы.
Ответ не обязательно должен быть на С++ (общий метод также приветствуется).
Есть ли более быстрый способ сделать это?
Спасибо