Existem métodos muito diferentes de divisão, dependendo dos números a serem manipulados. Para números inteiros, o método shift-and-subtract fornecido por outras pessoas funcionará bem. Para números de ponto flutuante, no entanto, pode ser mais rápido calcular primeiro o recíproco do denominador e depois multiplicar esse número pelo seu numerador.
A computação do recíproco do denominador não é tão ruim; isso é feito refinando aproximações sucessivas. Seja g o seu palpite por 1 / d. Para um palpite aprimorado, use g '= g (2-gd). Isso converge quadraticamente, então você duplica os dígitos da precisão em cada aprimoramento.
Exemplo: calcule o recíproco de 3,5.
Seu palpite inicial é 0,3. Você calcula 0,3 * 3,5 = 1,15. Sua estimativa ajustada é de 0,3 * (2 - 1,15) = 0,285. Já está bem perto! Repita o processo e você obtém 0,2857125 e uma terceira tentativa obtém 0,2857142857.
Existem alguns atalhos. No ponto flutuante, você pode extrair potências de dez ou potências de dois, dependendo da base numérica da sua máquina. E, para velocidade às custas de um maior uso de memória, você pode usar uma tabela pré-calculada para números no intervalo de 1 a b (onde b é sua base numérica) para obter uma estimativa imediatamente próxima do valor recíproco e salve uma ou duas etapas de refinamento.
Lembre-se de que, assim como a multiplicação e o constrangimento de Kolmogorov em 1960 por seu aluno Anatoly Karatsuba, você nunca sabe quando um método mais rápido ou melhor será encontrado. Nunca renuncie à sua curiosidade.