using System;
public class MyProgram
{
public static void Main(string[] args)
{
// Im folgenden Programm soll der größte gemeinsame Teiler (kurz ggT) von zwei Zahl n und m berechnet werden.
// Für die erste Zahl wird die Variable m deklariert.
int m;
// Für die zweite Zahl wird die Variable n deklaiert.
int n;
Console.WriteLine("Geben Sie die erste Zahl an: ");
// Der eingegebene Wert wird an die Variable m übergeben.
m = (int) inputValue();
Console.WriteLine("Geben Sie die zweite Zahl an:");
// Der eingegebene Wert wird an die Variable n übergeben.
n = (int) inputValue();
// Die Funktion recGGT wird mit den Zahlen n und m als Argument aufgerufen und liefert als Ergebnis den größten gemeinsamen Teiler der beiden Zahlen zurück.
Console.WriteLine(RecGGT(m, n));
}
public static int RecGGT(int m, int n)
{
// Die Funktion recGGT berechnet den größten gemeinsamen Teiler zweier Zahlen. Die zwei Zahlen wurden der Funktion bereits als Argument übergeben.
// Die Variable r ist eine Hilfsvariable, die für die spätere Berechnung benötigt wird.
int r;
// Das Ergebnis der Berechnung wird am Ende in der Variablen resultat gespeichert.
int resultat;
// Nun wird geprüft, ob die zweite Zahl m kleiner als die erste Zahl n ist, falls ja, wird die Berechnung gestartet und im Fall das m größer ist, wird die Funktion recGGT mit vertauschten Argumenten, also recGGT(n, m) aufgerufen.
if (m < n)
{
resultat = RecGGT(n, m);
}
r = m % n;
// Solange die Variable r ungleich 0 ist, wird die Funktion recGGT(n, r) aufgerufen. Im Fall, dass die Variable r gleich 0 ist, ist die Berechnung beendet. Und das Ergebnis wird in der Variablen resultat gespeichert.
if (r == 0)
{
resultat = n;
}
else
{
resultat = RecGGT(n, r);
}
return resultat;
}
// .NET kann nur einzelne Zeichen oder ganze Zeilen aus der Konsole lesen.
// Die folgende Funktion löst das Problem.
private static double inputValue()
{
double result;
while (!double.TryParse(Console.ReadLine(), out result));
return result;
}
}