Multiplying Large Numbers by Pencil: Divide et Impera Method

Riky Perdana
5 min readOct 9, 2024
Photo by Bianca Ackermann on Unsplash

I was bored, like HELL. I don’t know how to express it any better. From calculus, statistics, to matrices, most of them were done and already covered in articles, from a programmer perspective. I know I need to find another fun things I can enjoy my time on.

I love sudoku and abacus/soroban as an alternative for games I played and occassionally play them whenever I had a time. I know that both of them could be boring at times if done repeatedly for long hours. One thing I noticed on soroban is how error prone I was during long digits multiplication. Maybe that’s because I’m not good enough, but it indeed require unfazed concentration. Because if you do, you’d lost all the progress so far.

I may haven’t read so much papers or tutorials about fast or long manual multiplication method by hands. So there’s a chance that what I wrote below has been found long before and this is not a new invention at all. Nevertheless, I think this method of multiplying big numbers by pencil and paper is still worth sharing. So, here we go..

This method has nothing to do with matrices though it may look like one. It’s just simply a table where the columns represent an array of digits, so does the rows. So if you have a long digits multiplication like this, you could make a table like below:

997343 * 598401 = ? # let's find out

9 9 7 3 4 3 # each digit for each columns
__________________ # each digit for each rows
5 | 45 45 35 15 20 15
9 | 81 81 63 27 36 27
8 | 72 72 56 24 32 24 # each cells represents the..
4 | 36 36 28 12 16 12 # multiplication of row * col
0 | 00 00 00 00 00 00 # two digits format is intentional
1 | 09 09 07 03 04 03

The cells in the table are only the multiplication result of respective column and the row. This should be done easily and quick enough that you’d barely breaking a sweat, right?

     9  9  7  3  4  3    5  9  6  4  1  1  1  1  4
__________________ _________________________+
5 | 45 45 35 15 20 15 4 9 8 6 7 1 5 }
9 | 81 81 63 27 36 27 8 9 7 6 0 8 7 } # sum of first half
8 | 72 72 56 24 32 24 7 9 7 8 7 4 4 }
4 | 36 36 28 12 16 12 3 9 8 9 3 7 2 }
0 | 00 00 00 00 00 00 0 0 0 0 0 0 0 } # sum of second half
1 | 09 09 07 03 04 03 0 9 9 7 3 4 3 }
_________________________+
3 9 9 9 3 4 5 4 3 }
5 9 6 4 1 1 1 1 4 } # combine the two
__________________________________+
5 9 6 8 1 1 0 4 8 5 4 3 } # get the result

997,343 * 598,401 = 596,811,048,543 # calculator confirmed

On the right side of the table, we ought to make a unique addition process for each rows in the table. We simply add the adjacent numbers together that shall yield an array of numbers that represents a row result. Keep repeating the process on each rows with one condition, the next one should be indented by one digit, because each rows represents different values by ten times. You’re free to make consecutive 6 indented rows if you want to process the rows addition at one go later, but I prefer to slice 6 of them by 3, simply because my memory isn’t that big. Later we add the two results as above so it yield the final result. Feel free to concentrate reading the tutorial box above if you find this paragraph makes it more confusing. And if you’d like to know the details of the adjacent additions, here’s the detail box:

 ___vvv___vvv___   # pairing the adjacent numbers
45 45 35 15 20 15 # the mult result of first row

4(5+4)(5+3)(5+1)(5+2)(0+1)5 # addition of the adjacents
4 9 8 6 7 1 5 # first row result



___vvv___vvv___ # pairing the adjacent numbers
81 81 63 27 36 27 # the mult result of second row

8(1+8)(1+6)(3+2)(7+3)(6+2)7 # addition of the adjacents
8 9 7 5 10 8 7 # second row result
8 9 7 6 0 8 7
__<<__ # any 2 digits should be combined leftwise

Why this worked?

It actually worked because we didn’t do long multiplication by memorizing the progress in mind, but rather by simply splitting the big tasks into manageable chunks like 1 by 1 digit multiplication, adding the adjacent digits column-wise, and adding the rows in long/small batches as we want to. This method allows me not to memorize anything, the progress is plainly there, free to be suspended at any time and to be continued later. It even allows the distribution of calculation tasks, to as many people as you need.

I named this method “Divide et Impera” or “Divide and conquer” following the popular idiom for splitting big task into manageable chunks. Our brain isn’t that good on memorizing long numbers (at least mine), so that’s why this method helps, by moving that memorization tasks onto the paper. If you find that memorization isn’t a big deal, you can still take advantage of this method by reducing the amount of splittings on the rows addition task.

What this method is good for?

Since the age of portable calculator to this very day, manual calculation is hardly any legit work. Even still doing that is plain stupid, unless it’s for recreational purpose or simply math grinding. But there’ll be times when gadgets is not an option and long digits multiplication is needed, that’ll be the time this method could help.

I already tested this method on arbitrarily various length of digits like 6 by 6, 3 by 8, even 12 by 4. With careful inputs, I barely made any mistakes. Not getting errors on small digits multiplication and minor mistakes in large ones was an achievement by itself. So, would you like to try some?

Thanks.

--

--