Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 286
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

größten gemeinsamen Teiler berechnen.


Autor: Gast
Sprache: C#
Bewertung:
7.59 (4 votes)
Anzahl der Aufrufe: 10471
  
Kick it on dotnet-kicks.de  

Beschreibung:

Berechnet den größten gemeinsamen Teiler zweier Zahlen.

Abgelegt unter: mathe, ggt.



C#
1
2
3
4
public static int ggT( int n, int m )
{
  return n == m ? n : n<m ? ggT( n, m-n ) : ggT( n-m, m );
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Vladimir Horn schrieb am:  17.07.2009 13:57:36

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 23:32:13

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 11:19:47

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;
}


Diese Snippets könnten für Sie interessant sein:
[C#] Summe 1..n berechnen
[C#] Fibonacci-Folge berechnen
[C#] n-te Fibonaccizahl rekursiv berechnen
[C#] Summe 1²...n² berechnen.
[C#] Summe 1³..n³ berechnen.
[VB.NET] Multiplikation von übergroßen Zahlen
[C#] Dreiecksberechnung
[VB.NET] PI nach der Bailey-Borwein-Plouffe-Formel berechnen
[VB.NET] Quadratische Gleichung mit der PQ Formel lösen
[VB.NET] Basisrechenfunktionen für einen Kreis
[C++] Exponents
[C#] Quersummenberechnung
[C#] Geodaten in sexagesimal Format umrechnen
[VB.NET] Größten gemeinsamen Teiler berechnen
[VB.NET] Quadratwurzel ohne Sqrt() Funktion ziehen
[C#] Addiere alle ganzen Zahlen von x bis y
[C++] Caesar
[C#] "echte" Teiler Summe berechnen
[C#] Formelevaluierung aus RPN Form
[C#] Prüfung auf narzisstische Zahlen
[C#] CellMatrix
[C#] Maschinengenauigkeit
[C#] Flächenberechnungen am Kreis,Quadrat,Parallelogramm,Trapez
[C#] Bruch-Klasse
[VB.NET] einfacher rekursiver Mathe Parser
[VB.NET] Permutation nachweisen
[VB.NET] Das Sieb des Eratosthenes
[VB.NET] Primfaktorzerlegung
[VB.NET] Größter gemeinsamer Teiler
[VB.NET] Modulare Exponentation
[VB.NET] Fibonacci-Folge iterativ erzeugen
[VB.NET] Das Sieb von Atkin
[VB.NET] Das Sieb von Atkin (2)
[VB.NET] Werte zweier Variablen tauschen
[VB.NET] Ganzzahlige Wurzel
[VB.NET] Binäre Exponentation
[VB.NET] Größter gemeinsamer Teiler (2)
[VB.NET] Binomialkoeffizient
[VB.NET] Kleinster natürlicher Teiler > 1
[VB.NET] Das Sieb von Atkin (2) - aktuell
[VB.NET] Dezimalzahl in Zahl der Basis b < 37 konvertieren

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.