procedimiento multiplicación_rusa(a,b) inicio { i:=1; a_i:=a; b_i:=b; p:=0; mientras a_i!=1 hacer { i:=i+1; a_i:=entero_por_defecto(a_i/2); b_i:=2·b_i si resto(a_i div 2 ) != 0, p:=p+b_i } escribir('a·b=',p); } fin
Ejemplo de implementación: % multiplicación_rusa(45,98) salida: -> 45·98=4410
Proceso paso a paso:
------------------------------------------------------------------ i | a_i | ¿ a_i es impar ? | b_i | si a_i es impar | | | | acumula suma de | | | | b_i ------------------------------------------------------------------ 1 | 45 | sí | 98 | 98 ------------------------------------------------------------------ 2 | 22 | no | 196 | 98 ------------------------------------------------------------------ 3 | 11 | sí | 392 | 98+392=490 ------------------------------------------------------------------ 4 | 5 | sí | 784 | 490+784=1274 ------------------------------------------------------------------ 5 | 2 | no | 1568 | 1274 ------------------------------------------------------------------ 6 | 1 | sí | 3136 | 1274+3136=4410 ------------------------------------------------------------------
$\square$