### Russian peasants do too much work

There is a method of multiplication called the Russian peasant method. I’ve seen it mentioned here and there, but I was not explicitly educated in the process; it struck me as being more trouble than it was worth, and I didn’t previously bother to dig farther into it. I was recently inspired to dig into it, and it’s more interesting than it first appeared to me.

Here’s an example. Let’s say we want to multiply 465 and 231. The process most people are likely familiar with is to line up the numbers and then multiply each digit of the lower number by the upper number, in turn: \[ \begin{aligned} 465& \\ 231& \\ \hline & \\ 465& \\ 1395x& \\ 930xx& \\ \hline & \\ 107415& \end{aligned} \]

The Russian Peasant method involves creating two columns. In the first column, divide the number by two, truncating if needed. In the second column, multiply the number by two. Repeat this process until you have 1 in the first column:

465 | 231 |

232 | 462 |

116 | 924 |

58 | 1848 |

29 | 3696 |

14 | 7392 |

7 | 14784 |

3 | 29568 |

1 | 59136 |

Then add up the numbers in the second column if the number in the first column is odd:

465 | 231 |

29 | 3696 |

7 | 14784 |

3 | 29568 |

1 | 59136 |

TOTAL | 107415 |

As a method of actually multiplying numbers, this strikes me as doing a lot of work to avoid doing a little bit of work. While there are only three basic operations taking place (multiplying by 2, dividing by 2, and adding), those operations have to be applied numerous times. It did strike me as an entertaining parlor trick, but something of limited utility.

Then I was reading a 1968 book, *Mathematics: Strategies of Teaching* (Buffie, Welch, and Paige; Prentice-Hall), which uses the Russian peasant method as an example of how *not* to teach mathematics, not for the method itself but for the teaching of blind obeisance to algorithms: “When a pupil inquires *why* the technique works, the teacher replies, ‘Well, it just works out that way.'” (p. 3)

That led me to ask: Well, why *does* it work? I had the intuition that it had something to do with binary, but I wasn’t entirely sure what.

### Binary and what numeric representations *mean*

Let’s add a column to the first table above; we’ll put a 1 if the number in the first column is odd and a 0 if it’s even. I’ll also add another column, which may seem silly at first, which will be 0 if the number in the first column is even and will be a copy of the second (now third) column number otherwise. I’ll make it clear why I’m doing this later.

465 | 1 | 231 | 231 |

232 | 0 | 462 | 0 |

116 | 0 | 924 | 0 |

58 | 0 | 1848 | 0 |

29 | 1 | 3696 | 3696 |

14 | 0 | 7392 | 0 |

7 | 1 | 14784 | 14784 |

3 | 1 | 29568 | 29568 |

1 | 1 | 59136 | 59136 |

Next, we collect up those 1s and 0s, *starting at the bottom:* 111010001. 111010001 is 465 in base 2. More precisely said, \(111010001_2 = 465_A\)*.

So, first observation: What this gives us is a ready way to convert any number from decimal to binary without having to divide by powers of 2. Simply divide a number repeatedly by 2: If there’s a remainder, write a 1; otherwise, write a 0. Make sure to go from right to left, and there you go.

Now, why does this work for multiplication?

Well, in reality, we’re doing in binary what we normally do in decimal. The two methods I showed above are variants of the same strategy. Rewrite the table, but instead of dividing by two in the first column, we’ll divide by 10. Also, let’s flip the multiplicands. From left to right, the columns will represent:

- The number above it divided by 10 (truncated to an integer)
- The remainder of the number to the left when divided by 10
- The number above it multiplied by 10
- The product of the two columns immediately to the left

That is:

231 | 1 | 465 | 465 |

23 | 3 | 4650 | 13950 |

2 | 2 | 46500 | 93000 |

The numbers in the last column should look familiar: They’re what we came up with doing the “standard method”, with the trailing zeroes written.

This method works with any integer greater than one. Let’s try it with five. Our table will have these columns:

- The number above it divided by 5 (truncated to an integer)
- The remainder of the number to the left when divided by 5
- The number above it multiplied by 5
- The product of the two columns immediately to the left

Thus:

231 | 1 | 465 | 465 |

46 | 1 | 2325 | 2325 |

9 | 4 | 11625 | 46500 |

1 | 1 | 58125 | 58125 |

Once again, the sum of the values in the last column is 107415. Also, \(231_A = 1411_5\).

Let’s do it one more time, just for fun. This time, I’ll be using 8. This is the table:

231 | 7 | 465 | 3255 |

28 | 4 | 3720 | 14880 |

3 | 3 | 29760 | 89280 |

Once again, our sum is 107415, and we have learned that \(231_A = 347_8\).

The Russian peasant method doesn’t need the remainder column, since the remainder is always either 0 or 1, which can be quickly determined from whether the number being divided is even or odd. Likewise, the last column is not needed since the even rows can simply be struck through. But at its heart, the method is the same.

So what is it we’re doing, anyway? First we note that \( 465 = 232 \cdot 2 + 1 \), and that \( 232 = 116 \cdot 2 \), thus that \( 465 = 116 \cdot 2^2 + 1\). We continue: \( 465 = 58 \cdot 2^3 + 1 = 29 \cdot 2^4 + 1 \)\( = (28 + 1) \cdot 2 ^4 + 1 = 28 \cdot 2^4 + 1 \cdot 2 ^ 4 + 1 = 14 \cdot 2^5 + 2^ 4 + 1 = 7 \cdot 2^6 + 2^4 + 1 \)\( = 3 \cdot 2^7 + 2^6 + 2^4 + 1 = 2^8 + 2^7 + 2^6 + 2^4 + 1 \). We’re then multiplying 232 by \(2^2, 2^3, \) and so on. For instance, the fifth row represents \(2^4\), while the seventh row represents \(2^6\).

For other bases, we’re doing the same basic thing: We’re rewriting one of the multiplicands in terms of a base, then multiplying the other multiplicand by each digit of that base’s representation. Because we’re performing the actual multiplications in decimal (\(11625 \cdot 4 = 46500\), for instance), we don’t need to worry explicitly about other bases; that’s just what’s going on behind the scenes.

### So what is this good for?

I continue to balk at the notion of using the Russian peasant method as a means of teaching elementary-level multiplication. It strikes me, instead, that it’s a useful exploration for secondary and college-level students on what numbers and multiplication really mean. Our use of decimal is an anatomical accident; another species on another planet may well use octal, or duodecimal, or any other reasonable base. Indeed, mathematically, decimal is inferior to several other bases. We continue to use it because it serves our purposes well enough (even if it does make the life of the math-coprocessor programmer more difficult).

It also provides a handy way of converting from decimal to any other base, which is an added bonus.

* I am using subscript A instead of 10 to represent decimal because every number is 10 in its own base. \(10_2 = 2_A; 10_3 = 3_A;\) and so on. Since hexadecimal (base G) uses A to F to represent the needed extra digits, I use the convention of A .. Z for the needed digits for the first 35 bases.

## 1 Comment