C# - größten gemeinsamen Teiler berechnen. Veröffentlicht von Anonymus am 8/4/2006 (4 Bewertungen) Berechnet den größten gemeinsamen Teiler zweier Zahlen. public static int ggT( int n, int m ) { return n == m ? n : n<m ? ggT( n, m-n ) : ggT( n-m, m ); } Abgelegt unter mathe, ggt. 3 Kommentare zum SnippetVladimir Horn schrieb am 7/17/2009:Sieht wirklich gut aus, aber nicht universell. In einem ungünstigen Fall bekommt man "stack overflow exception". Beispiel: 10 und 10000000. ;)Klemens Nanni schrieb am 3/23/2010:Hier wird auf Rekursion zurückgegriffen, was bei großen Zahlen sehr lahmend ist. Mit einer iterativen Methode wie der folgenden erhält man bei deinen Zahlen keinen Overflow, Vladimir:http://dotnet-snippets.de/dns/groessten-gemeinsamen-teiler-iterativ-ermitteln-SID1361.aspxThomas Lück schrieb am 10/6/2011:ich habe folgenden Code dafür benutzt.Und damit ich garantiert ein ergebnis bekomme, habe ich dafür gesorg, dass bei einem negativen Zähler in einem Bruch der Zähler in der Funktion einmal mit -1 multipliziert wird.Sonst hängt er sich auf public int ggT(int a, int b) { int functionReturnValue = 0; if (a < 0) { a = a * (-1); } while (b > 0) { functionReturnValue = a % b; a = b; b = functionReturnValue; } return a; } Logge dich ein, um hier zu kommentieren! Ähnliche Snippets Varianz und MittelwertModulare ExponentationFibonacci-Folge bis zu einem LimitMultiplikation von übergroßen ZahlenBinomialkoeffizientDreiecksberechnungQuersummenberechnungBruch-Klasseeinfacher rekursiver Mathe Parser"echte" Teiler Summe berechnenPermutation nachweisenFibonacci-Folge iterativ erzeugenSumme 1²...n² berechnen.Basisrechenfunktionen für einen KreisKleinster natürlicher Teiler > 1