arbitrary big integer divisions

Started by
2 comments, last by fir 10 years, 8 months ago

Some time ago I wonder how i would write some small library for arbitrary-big integer arithmetics

probably it would be proper to store such arbitrary big number as a vector of unsigned integers

addition would be simple, substraction would be simpe, multiplication probably could be done through some matrix-like-result multiplications and than sum up things (am i right?)

but what with division - can it calculated in some way close to such multiplication-result-matrix i write above? how could be such division done?

Advertisement

This is the basic algorithm: http://en.wikipedia.org/wiki/Long_division

You would do binary long division. You need to use unsigned numbers since you can't 2's complement an arbitrarily large number... just follow the usual rules for negatives (i.e. -/- = +, +/+ = +, -/+ = -, +/- = -) once you do the unsigned version.

Wikipedia:

Integer division (unsigned) with remainder

The following algorithm, the binary version of the famous long division, will divide N by D, placing the quotient in Q and the remainder in R. All values are treated as unsigned integers.[citation needed]]]


if D == 0 then throw DivisionByZeroException end
Q := 0                 initialize quotient and remainder to zero
R := 0                     
for i = n-1...0 do     where n is number of bits
  R := R << 1          left-shift R by 1 bit    
  R(0) := N(i)         set the least-significant bit of R equal to bit i of the numerator
  if R >= D then
    R = R - D               
    Q(i) := 1
  end
end  

You can do binary long multiplication for multiplying as well... although there are better algorithms for very large numbers of bits.

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

You would do binary long division. You need to use

Much Tnx, I didn't know about this. I will take my time tu munch (crunch/digest) it..

This topic is closed to new replies.

Advertisement