#include <Arduino.h>
// Funktion zur Berechnung des ggT mit dem Euklidischen Algorithmus
int berechneGGT(int a, int b) {
while (b != 0) { // Solange b nicht 0 ist, wird die Schleife ausgeführt
int temp = b; // Speichere den aktuellen Wert von b in einer temporären Variablen
b = a % b; // Berechne den Rest der Division von a durch b und weise ihn b zu
a = temp; // Weise den gespeicherten Wert von b a zu
}
return a; // Wenn b 0 ist, ist a der ggT
}
void setup() {
Serial.begin(9600);
Serial.println("Berechnung des größten gemeinsamen Teilers (ggT)");
}
void loop() {
int a, b;
// Eingabe der ersten Zahl
Serial.println("Geben Sie die erste Zahl (a) ein:");
while (Serial.available() == 0) {} // Warten auf Eingabe
a = Serial.parseInt(); // Lese die eingegebene Zahl ein
while (Serial.available() > 0) { // Restliche Eingaben löschen
Serial.read();
}
// Eingabe der zweiten Zahl
Serial.println("Geben Sie die zweite Zahl (b) ein:");
while (Serial.available() == 0) {} // Warten auf Eingabe
b = Serial.parseInt(); // Lese die eingegebene Zahl ein
while (Serial.available() > 0) { // Restliche Eingaben löschen
Serial.read();
}
// Berechnung des ggT
int ggt = berechneGGT(a, b); // Aufruf der Funktion zur Berechnung des ggT
// Ausgabe des Ergebnisses
Serial.print("Der größte gemeinsame Teiler (ggT) von ");
Serial.print(a);
Serial.print(" und ");
Serial.print(b);
Serial.print(" ist: ");
Serial.println(ggt);
// Frage, ob eine erneute Berechnung durchgeführt werden soll
Serial.println("Möchten Sie eine weitere Berechnung durchführen? (J/N)");
while (true) {
while (Serial.available() == 0) {} // Warten auf Eingabe
char antwort = Serial.read(); // Lese die Antwort ein
if (antwort == 'J' || antwort == 'j') {
break; // Wenn die Antwort 'J' oder 'j' ist, wird die Schleife beendet und eine neue Berechnung gestartet
} else if (antwort == 'N' || antwort == 'n') {
Serial.println("Programm beendet.");
while (true); // Endlosschleife, um das Programm zu stoppen
}
}
// Kurze Pause vor der nächsten Berechnung
delay(1000);
}