IT-Knowledgebase
de Programmieren Sprachen Golang

Äthiopisches Multiplizieren

Ziel ist es ein Programm zu schreiben, welches auf die alte äthiopische Art multipliziert. Dabei werden die beiden zu multiplizierenden Zahlen nebeneinander geschrieben. Die linke Zahl wird nun immer halbiert, bis sie 1 ist und die rechte Zahl wird solange immer wieder verdoppelt. Jetzt werden die rechten Zahlen aufaddiert, wo die linke zugehörige Zahl ungerade ist.

Beispiel

Als Beispiel wollen wir 17 mit 34 multiplizieren.

Zahl1 Zahl2
17 34
8 68
4 136
2 272
1 544

Ergebnis = 34 + 544 = 578

Für den Anfang habe ich mir drei Variablen erstellt. Zwei die wir miteinander multiplizieren möchten und eine um das spätere Ergebnis festzuhalten.

1zahl1 := 17
2zahl2 := 34
3erg := 0

Als nächstes wollen wir Anfangen die Zahlen zu verändern. Da wir das machen bis Zahl1 gleich 1 ist habe ich dafür eine FOR-Schleife benutzt.

1for zahl1 > 0 {
2	//Prüfen ob Zahl ungerade
3	if zahl1%2 == 1 {
4		erg += zahl2
5	}
6
7        zahl1 /= 2
8        zahl2 *= 2
9}

Wir prüfen also ob die Zahl1 ungerade ist. Sollte sie ungerade sein zählen wir die zweite Zahl zu unserem Ergebnis. Anschließend halbieren wir die erste und verdoppel die Zweite Zahl.

Kompletter Code

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6	zahl1 := 17
 7	zahl2 := 34
 8	erg := 0
 9
10	for zahl1 > 0 {
11		//Prüfen ob Zahl ungerade
12		if zahl1%2 == 1 {
13			erg += zahl2
14		}
15
16		zahl1 /= 2
17		zahl2 *= 2
18	}
19
20	fmt.Println(erg)
21
22}