I was just wondering what different strategies there are for division when dealing with big numbers. By big numbers, I mean ~50 digit numbers .
e.g.
9237639100273856744937827364095876289200667937278 / 8263744826271827396629934467882946252671
When both numbers are big, long division seems to lose its usefulness…
I thought one possibility is to count through multiplications of the divisor until you go over the dividend, but if it was the dividend in the example above divided by a small number, e.g. 4, then that’s a huge amount of calculations to do.
So, is there simple, clean way to do this?
What language / platform do you use? This is most likely already solved, so you don’t need to implement it from scratch. E.g. Haskell has the
Integertype, Java thejava.math.BigIntegerclass, .NET theSystem.Numerics.BigIntegerstructure, etc.If your question is really a theoretical one, I suggest you read Knuth, The Art of Computer Programming, Volume 2, Section 4.3.1. What you are looking for is called “Algorithm D” there. Here is a C implementation of that algorithm along with a short explanation:
http://hackers-delight.org.ua/059.htm