Was berechnet dieser Algorithmus?

Hallo liebe Wissenden, das habe ich gerade in einer Zeitschrift
gefunden und werde nicht so ganz schlau draus:
Vielleicht könnt ihr mir ja des Rätsels Lösung bringen?

1.) lies a und b ein
2.) x = a; y = b; z = 0;
3.) Solange (x > 0) tue
4.) wenn (x ungerade) z = z + y;
5.) y = y * 2;
6.) x = x / 2;
7.) drucke z
PS:Meine Vermutung ist „a*b“ wenn a>=5 und a ungerade.
Wer hat mehr Ahnung davon als ich und antwortet mir?

danke und Gruß,
Karotier

Bauernmultiplikation
Dein Algorithmus beschreibt
die sog. „Bauernmultiplikation“.
(Ich glaube, aus Knaur’s Buch
der Mathematik oder irgendwo
in einem ähnlichen populärwissenschaftlichen
Buch mal gelesen)

Ein in Vergessenheit geratenes
Multiplikationsverfahren, bei dem
man nur Verdoppeln und Halbieren
und Addieren können muss.

Gruss, Marco

Hallo liebe Wissenden, das habe ich gerade in einer
Zeitschrift
gefunden und werde nicht so ganz schlau draus:

1.) lies a und b ein
2.) x = a; y = b; z = 0;
3.) Solange (x > 0) tue
4.) wenn (x ungerade) z = z + y;
5.) y = y * 2;
6.) x = x / 2;
7.) drucke z

ich fuer meinen teil frage mich wie die schleife terminieren soll…

x=x/2 --> x=0 nach spätestens 64 Durchläufen, oder?

Gruss, Marco

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1.) lies a und b ein
2.) x = a; y = b; z = 0;
3.) Solange (x > 0) tue
4.) wenn (x ungerade) z = z + y;
5.) y = y * 2;
6.) x = x / 2;
7.) drucke z

ich fuer meinen teil frage mich wie die schleife terminieren
soll…

x=x/2 --> x=0 nach spätestens 64 Durchläufen, oder?

bedingt.
nur wenn der typ festgelegt ist/wird.
fiel mir vorhin gerade ein, dass man nach der x-teilung x immer auf nen int abrunden muss… dann teminiert es auch…

aber wie leitest du die 64 durchlaeufe ab?

Ein in Vergessenheit geratenes
Multiplikationsverfahren, bei dem
man nur Verdoppeln und Halbieren
und Addieren können muss.

und an welcher stelle kommmt das ergebnis raus? weil das letzte z ist es nicht und die summer der z auch nicht.

aber wie leitest du die 64 durchlaeufe ab?

long int

und an welcher stelle kommmt das ergebnis raus? weil das
letzte z ist es nicht und die summer der z auch nicht.

Doch, das letzte Zett ists.

Das Produkt von a und Bee ist die Summe aller y-e,
bei denen das zugehörige x ungerade ist.

z.B.
10*11
10 11
5 22
2 44
1 88

22+88=110 :smile:

Bei komplizierteren Zahlen
muss man halt verdoppeln und
Halbieren immer als Nebenrechnungen
durchführen, so wie früher
in der Grundschule …

Gruss, Marco

und an welcher stelle kommmt das ergebnis raus? weil das
letzte z ist es nicht und die summer der z auch nicht.

Doch, das letzte Zett ists.

uups implementierungsfehler…
x%2 != 0
ich hatte ==

danke.