using System;
public class MyProgram
{
public static void Main(string[] args)
{
// Für die erste Zahl wird die Variable A deklariert.
int a;
// Für die zweite Zahl wird die Variable B deklariert.
int b;
// Für die Berechnung werden einige Hilfsvariablen benötigt.
// Um die Möglichkeit zu haben, die zwei Zahlen miteinander zu vertauschen zu können, wird die Variable c deklariert.
int c;
// Als Speicher für den Zählerstand innerhalb der while Schleife wird die Variable k deklariert.
int k;
// Als Abbruchbedingung für die while Schleife wird die Variable r deklariert.
int r;
// Die Zwischenergebnisse und das Endergebnis werden in einer Variablen gespeichert. Dafür wird die Variable kgV deklariert.
int kgV;
Console.WriteLine("Geben Sie die erste Zahl an: ");
a = (int) inputValue();
Console.WriteLine("Geben Sie die zweite Zahl an: ");
b = (int) inputValue();
// Die Variable k wird mit dem Wert 0 initialisiert.
k = 0;
// Hier wird geprüft, ob A kleiner als B ist, falls ja, werden die zwei Zahlen miteinander vertauscht. Der Tausch erfolgt über die Variable c. Im Fall, dass A nicht kleiner als B ist, beginnt die Berechnung.
if (a < b)
{
c = a;
a = b;
b = c;
}
do
{
// Bei jedem Durchlaufen der while Schleife wird der Wert der Variable k um 1 erhöht.
k = k + 1;
// In der Variable kgV wird das Zwischenergebnis gespeichert. Dabei wird die kleinere der beiden Zahlen mit dem Wert der Variablen k multipliziert. Da der Wert k sich bei jedem Durchlaufe durch die Schleife um 1 erhöht, wird der Wert der Variablen kgV bei jedem Durchlauf um der Wert der Variablen A erhöht.
kgV = a * k;
// Mithilfe der Modulo Funktion wird geprüft, ob das Zwischenergebnis in Variable kgV bereits das Endergebnis ist. Dazu wird kgV MOD B berechnet. Das Ergebnis der Berechnung wird in der Variablen r gespeichert.
r = kgV % b;
// Solange r ungleich 0 ist, wird die while Schleife durchlaufen. Im Fall, dass r gleich 0 ist, wird die Schleife beendet.
}
while (r != 0);
Console.WriteLine("Das kleinste gemeinsame Vielfache der zwei Zahlen ist: ");
Console.WriteLine(kgV);
}
// .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;
}
}