Feedback

C# - größten gemeinsamen Teiler berechnen.

Veröffentlicht von am 04.08.2006
(4 Bewertungen)
Berechnet den größten gemeinsamen Teiler zweier Zahlen.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Entwickler - Kompakt

Nach Teilnahme an dieser Schulung kennen Sie alle wesentlichen Funktionen des TFS für Entwickler. Sie setzen Software-Entwicklung mit dem Visual Studio Team Foundation Server erfolgreich um.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

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 Snippet

Vladimir Horn schrieb am 17.07.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 23.03.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.aspx
Thomas Lück schrieb am 06.10.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!