Russian Peasant Multiplication / was question on how
- To: mathgroup at smc.vnet.net
- Subject: [mg131370] Russian Peasant Multiplication / was question on how
- From: "Dr. Robert Kragler" <kragler at hs-weingarten.de>
- Date: Tue, 2 Jul 2013 00:44:02 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- Reply-to: kragler at hs-weingarten.de
On Sun, Jun 30, 2013 at 3:29 AM, <d.a.paxton at gmail.com> wrote: Hi Dave, in Wikipedia you will find an explicit example for the Russian Peasant Multiplication. This algorithm can be simply programed in Mathematica : RussianPeasantMultplication[x0_Integer,y0_Integer]:= Module[{x,y,yS,nD }, x=x0;y=y0; yS=y; nD=Max @ (Length /@ IntegerDigits @ {x0,y0}); pf=PaddedForm[#,2nD+2]&; If[x<0,(sgn=Sign[x];x=Abs[x];),(sgn=+1;x=x;)]; While[x>=1,(Print["x=",pf @ x,"; ","y=",pf @ y,"; ","yS=",pf @ yS ]; x=Floor[x/2];y=2y; If[OddQ[x], yS=yS+y];) ]; Return[sgn*yS] ] See for example x0=-27;y0=82; RussianPeasantMultplication[x0,y0] gives as output x= 27; y= 82; yS= 82 x= 13; y= 164; yS= 246 x= 6; y= 328; yS= 246 x= 3; y= 656; yS= 902 x= 1; y= 1312; yS= 2214 Out[32]= -2214 Regards Robert Robert Kragler Email : kragler at hs-weingarten.de URL : http://portal.hs-weingarten.de/web/kragler