// https://www.youtube.com/watch?v=665rzOSSxWA
// https://claude.ai/chat/49550564-1e05-4727-a5a7-b66513fa2607
#include <Arduino.h>
char buffer[32];
int bufIndex = 0;
// Calcul récursif du GCD (algorithme d'Euclide)
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
void setup() {
Serial.begin(115200);
while (!Serial) {}
Serial.println("System Ready");
Serial.println("Entrez deux entiers séparés par une virgule (ex: 12, 8) :");
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c == '\n' || c == '\r') {
if (bufIndex > 0) {
buffer[bufIndex] = '\0'; // Terminer la chaîne
// Chercher la virgule dans le buffer
char *comma = strchr(buffer, ',');
if (comma != NULL) {
*comma = '\0'; // Couper la chaîne à la virgule
int a = atoi(buffer); // Premier entier (avant la virgule)
int b = atoi(comma + 1); // Deuxième entier (après virgule + espaces ignorés par atoi)
Serial.print("GCD(");
Serial.print(a);
Serial.print(", ");
Serial.print(b);
Serial.print(") = ");
Serial.println(gcd(a, b));
} else {
Serial.println("Format invalide. Utilisez : a, b");
}
bufIndex = 0; // Réinitialiser le buffer
Serial.println("Entrez deux entiers séparés par une virgule :");
}
} else if (bufIndex < (int)sizeof(buffer) - 1) {
buffer[bufIndex++] = c; // Stocker le caractère
}
}
}