De manier waarop de meeste mensen grote natuurlijke getallen hebben leren vermenigvuldigen, ziet er ongeveer als volgt uit

    57
×   86
-------
   342
+ 456
-------
  4902

Als je de tafels van vermenigvuldiging van buiten kent, dan is deze zogenaamde lange vermenigvuldiging snel en relatief eenvoudig te berekenen.

Er bestaan echter nog tal van andere manieren om te vermenigvuldigen. Een van deze methoden staat bekend als het Russische boerenalgoritme. Om een vermenigvuldiging uit te voeren volgens deze methode heb je de tafels van vermenigvuldiging niet nodig. Je moet enkel getallen kunnen verdubbelen, halveren en optellen. Het algoritme van de Russische boeren gaat als volgt:

Hieronder wordt de volledige vermenigvuldigingstabel getoond die volgt uit het Russische boerenalgoritme wanneer we het gebruiken om de getallen 57 en 86 met elkaar te vermenigvuldigen. We schrijven eerst de getallen 57 en 86 als hoofding van twee kolommen. Omdat het getal in de tweede kolom in dit geval even is, doorstrepen we de volledige rij. Daarna verdubbelen we 57 tot 114 en halveren we 86 tot 43. We blijven verdubbelen, halveren en doorstrepen totdat het getal in de tweede kolom gelijk is aan 1. De som van de niet-doorstreepte getallen uit de eerste kolom levert het product van de vermenigvuldiging op.

    57  86
   114  43
   228  21
   456  10
   912   5
  1824   2
+ 3648   1
----------
  4902

Er wordt beweerd dat deze methode nog steeds gebruikt wordt door boeren in sommige gebieden binnen Rusland. Wat er ook van zij, het blijft gissen naar de oorsprong van de boerenvermenigvuldiging. Mogelijk gaat ze terug naar een eeuwenoud Russisch boek waarin de methode voor het eerst wordt beschreven in de (relatief) moderne tijd. De verwijzing naar Rusland in de naam van het algoritme slaat vermoedelijk op de Russische vertaling ervan in dit boek, terwijl de verwijzing naar de boeren vermoedelijk werd toegevoegd door het feit dat algemeen werd aangenomen (in ieder geval in vroegere tijden) dat het Russische grondgebied bijna uitsluitend door boeren werd bevolkt. Zij het dan zeer dunnetjes.

Het zou even goed kunnen dat de methode zijn oorsprong vind in de Oud-Egyptische wiskunde, aangezien een soortgelijke procedure gebruikt wordt in de Rhind-papyrus1. De methode wordt soms ook de Ethiopische (boeren)vermenigvuldiging genoemd, omdat deze twee volkeren in elkaars nabijheid woonden en heel wat culturele uitwisseling vertoonden.

Invoer

Twee getallen $$m, n \in \mathbb{N}_0$$, elk op een afzonderlijke regel.

Uitvoer

De opeenvolgende regels die geproduceerd worden door $$m$$ en $$n$$ met elkaar te vermenigvuldigen volgens het Russische boerenalgoritme. Elke regel moet twee getallen bevatten die van elkaar worden gescheiden door een spatie. Het is niet nodig om aan te geven welke regels moeten doorstreept worden.

Als laatste regel moet het product van $$m$$ en $$n$$ uitgeschreven worden. Hierbij is het niet toegelaten om in je broncode een vermenigvuldiging van de twee getallen uit te voeren. Je moet dus de som berekenen van de niet doorstreepte getallen uit de eerste kolom.

Voorbeeld

Invoer:

57
86

Uitvoer:

57 86
114 43
228 21
456 10
912 5
1824 2
3648 1
4902