Russische Bauernmultiplikation mit Python
Durch eine SX Frage bin ich auf das Verfahren der „Russischen Bauernmultiplikation“ gestoßen, mit der man ohne Multiplikation ganzzahlige Zahlen miteinander multiplizieren kann. Just for Fun hier die Python-Implementierung:
# -*- coding: utf-8 -*- """ Created on Sat Mar 18 10:04:40 2017 @author: Uwe Ziegenhagen """ import pandas as pd from math import floor def russianPeasantMultiply(a, b): assert a > 1 assert b > 0 data = pd.DataFrame([[a, b]], columns=list('ab')) while a > 1: a = floor(a/2) b = b + b data.loc[len(data)]=[a, b] data = data[data['a'] % 2 == 1] return(data.b.sum()) print(russianPeasantMultiply(63, 17)) |
Ohne pandas geht es sicher auch, aber pandas macht es etwas einfacher…