# ggt von zwei Zahlen



## DatBolimbo (6. Sep 2006)

Hallo,

wie kann man in Java den größten gemeinsamen Teiler finden.

Ich glaube bei meinem Versuch fehlt irgendetwas.


```
public static long ggt(long a, long b) {
if (b == 0) return a;
if (a > b) return ggt(a - b, b);
else return ggt(a, b -a);
}
```

Bekomme bei verwendung von einigen Zahlen einen StockOverflowError, weiß aber nicht genau warum.

Bitte um Hilfe.

MfG Bolimbo


----------



## SlaterB (6. Sep 2006)

schön, dass du KEIN Beispiel angibst, so kann jeder selber probieren 

na ist in diesem Fall ja einfach,
wenn a == b != 0 dann gibts ne Endlosschleife

allgemeiner Tipp:
gib in jeder Schleife mit System.out.println() den aktuellen Stand aus, und auch welches if oder else benutzt wird,
dann weißt du was los ist,


gehts dir zu schnell, dann lasse das Programm warten

1 Sekunde = 1000 Millisekunden = 

```
try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
```


----------



## Guest (7. Sep 2006)

Deine Anfangsbedingung ist falsch, so sollte es besser gehen.


```
public static int ggT(int a, int b) {
        if (a == b) {
            return a;
        }
        if (a > b) {
            return ggT(b, (a - b));
        }
        return ggT(b, (b - a));
    }
```

PS: ZU dem Thema findest du aber tausende sachen im netz, da musst du nicht für posten, "Selbst ist der Mensch"


Pascal
C
Java

etc...


----------



## SlaterB (7. Sep 2006)

tztz, wie kann man so ein einfaches Programm nur falsch korrigiert posten 

die untere Version funktioniert für (5,0) nicht mehr,


----------



## Guest (7. Sep 2006)

Was soll den bitteschön von 5 und 0 der GGT sein, da gibt es gewisse assertions, die natürlich eingehalten werden müssen. Aber sowas ist doch klar!!!


----------

