Tei­ler bestimmen

void setup()
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}

  Serial.println("Eingabe der Zahlen:");
  Serial.println("Zahlenraum,minimaler-maximaler Teiler:");
  Serial.println("Beispiel: 100,15-19");
  Serial.println("Zahlenraum muss < 500 sein!");
  Serial.println("---------------------------------------------------");
}

void loop()
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0)
  {
    // solange lesen, bis return eingegeben wurde
    String Eingabe = Serial.readStringUntil('\n');

    // das letzte Zeichen ist return -> soll entfernt werden
    Eingabe = Eingabe.substring(0, Eingabe.length() - 1);

    // das Komma suchen
    int SucheKomma = Eingabe.indexOf(",");

    // in der Eingabe fehlt das Komma
    if (SucheKomma == -1) Serial.println("Komma fehlt!");
    else
    {
      // String nach dem Komma -> Teiler Min/Max bestimmen
      int SucheMinus = Eingabe.indexOf("-");

      // Eingabe der Teiler ist unvollständig
      if (SucheMinus == -1) Serial.println("Festlegung der Teiler fehlt!");
      else
      {
        // String bis zum Komma -> Festlegung des Zahlenraums
        String ZahlenRaum = Eingabe.substring(0, SucheKomma);

        // Zählung des Arrays beginnt mit 0
        // -> Array muss um 1 größer als die gewünschte Zahl sein
        int ZahlMax = ZahlenRaum.toInt() + 1;

        // verhindern, dass Zahlen >500 eingegeben werden
        if (ZahlMax > 500) Serial.println("Der Zahlenraum muss < 500 sein!");
        else
        {
          String EingabeMin = Eingabe.substring(SucheKomma + 1, SucheMinus);
          String EingabeMax = Eingabe.substring(SucheMinus + 1, Eingabe.length());
          int MinDivisor = EingabeMin.toInt();
          int MaxDivisor = EingabeMax.toInt();

          // Array definieren
          int Zahlen [ZahlMax];

          // Länge des Arrays bestimmen
          int Laenge = sizeof(Zahlen) / sizeof(Zahlen[0]);

          // Array mit Zahlen füllen
          for (int i = 2; i <= Laenge; i++)
          {
            Zahlen[i] = i;
          }

          // Hinweis auf den Zahlenraum und den maximalen Teiler
          Serial.println("Im Zahlenraum bis " + String(ZahlMax - 1) + " durch " + 
          String(MinDivisor)  + " bis " + String(MaxDivisor) + " teilbare Zahlen: ");
          Serial.println("-------------------------------------------------- -");

          /*
            Ergebnisse mit der Funktion ErgebnisAnzeigen anzeigen
            übergebene Parameter:
            Array Zahlen
            Divisor -> i
            Länge des Arrays -> Laenge
          */
          for (int i = MinDivisor; i <= MaxDivisor; i++)
          {
            ErgebnisAnzeigen(Zahlen, i, Laenge);
          }
          Serial.println("----------------------------------------------------");
        }
      }
    }
  }
}

void ErgebnisAnzeigen(int Zahlen[], int Divisor, int Laenge)
{
  Serial.print("Durch " + String(Divisor) + " teilbare Zahlen: ");
  int Anzahl = 0;
  /*
    mit Hilfe der Funktion modulo wird ermittelt,
    ob die Zahl durch den Divisor teilbar ist
    Start mit dem aktuellen Wert für Divisor
  */
  for (int i = Divisor; i < Laenge; i++)
  {
    // Zahl ist teilbar -> Zahl anzeigen
    if (Zahlen[i] % Divisor == 0)
    {
      Serial.print(String(Zahlen[i]) + ", ");
      Anzahl++;
    }
  }

  // Anzahl der teilbaren Zahlen anzeigen
  Serial.print(" (" + String(Anzahl) + ")");
  Serial.println();
}