GGT Iterativ bestimmen

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 GGT Iterativ bestimmen

Hallo,
ich soll den GGT iterativ in java erstellen.
Hier mein Vorschlag:
public static GGT ( int a, int b)
{
while (a != b){
if (a>b) {
a=a-b;
b=b-a;}
}
return a;
}
}
 
Auf diesen Beitrag antworten »
eulerscheZahl

Und für a < b hängen wir in der while Schleife fest, bis der Nutzer ein Erbarmen hat und das Programm beendet?

Der Algorithmus sieht verkehrt aus, wirf mal einen Blick auf das, was Euklid dazu hat.
Mit modulo kommst du übrigens noch schneller ans Ziel.
Auf diesen Beitrag antworten »
neuling96

Zitat:
Original von eulerscheZahl
Und für a < b hängen wir in der while Schleife fest, bis der Nutzer ein Erbarmen hat und das Programm beendet?


Wieso?

Wenn a<b gilt wird doch die Differenz gebildet b=b-a und solange a!=b.
Auf diesen Beitrag antworten »
eulerscheZahl

dann fehlt aber ein else.
Derzeit wird bei a>b erst etwas von a abgezogen und dann von b.

Für a < b passiert nichts, aber aus dem while kommst du auch nicht raus, da ja a != b ist.
 
Auf diesen Beitrag antworten »
neuling96

public static GGT ( int a, int b)
{
while (a != b){
if (a>b) {
a=a-b;
else b=b-a;}
}
return a;
}
}

ich komm aus while raus sobald a=b gilt, und das ist auch das ggt

bsp a= 5 b=2

1 durchgang
a=3
b=2
2 durchgangg
a=1
b=2
3 durchgang
a=1
b=1

schleife beendet , da a!=b false ist


oder a=3,b=6
1)
a=3
b=3
schleife beendet, a!=b false ist

oder habe ich da ein denk fehler
Auf diesen Beitrag antworten »
eulerscheZahl

Jetzt (mit else) stimmt dein Vorgehen.
hier ist aber die Klammersetzung falsch:
code:
1:
2:
3:
if (a>b) {
a=a-b;
else b=b-a;}

das wird der Compiler so nicht schlucken - entweder
code:
1:
2:
3:
if (a>b)
    a=a-b;
else b=b-a;

oder
code:
1:
2:
3:
4:
5:
if(a > b) {
    a -= b;
} else {
    b -= a;
}
Auf diesen Beitrag antworten »
neuling96

vielen dank Daumen hoch
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »