int Zahl;
int EingabeMax = 1000;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
Serial.println("Zahl eingeben:");
Serial.println("Maximum ist: " + String(EingabeMax) + "!");
}
void loop()
{
String Eingabe;
while (Serial.available() > 0)
{
// solange lesen, bis return \n eingegeben wurde
Eingabe = Serial.readStringUntil('\n');
// das letzte Zeichen ist return → soll entfernt werden
Eingabe = Eingabe.substring(0, Eingabe.length() - 1);
// eingegebene Eingabe zu int umwandeln
Zahl = Eingabe.toInt();
// nur ausführen wenn Zahl < 1000
// -> ansonsten ist die Rechenzeit zu lang
if (Zahl <= EingabeMax)
{
int ZaehlerZeile = 0;
Serial.println("----------------------------------------------");
Serial.println("Primzahlen bis " + String(Eingabe)) ;
for (int i = 2 ; i < Zahl; i++)
{
// Primzahl suchen -> Funktion aufrufen
bool Suche = Primzahl(i);
// Primzahl gefunden -> Suche = true
if (Suche)
{
ZaehlerZeile++;
// 10 Zahlen pro Zeile
if (ZaehlerZeile % 10 == 0) Serial.println(String(i) + "," ) ;
else Serial.print(String(i) + "," + '\t') ;
}
}
Serial.println("\n---------------------------------------------");
Serial.println(String(ZaehlerZeile) + " Primzahlen gefunden!");
}
else Serial.println("Die Eingabe ist >1000");
}
}
bool Primzahl(int Zahl)
{
// nur bis zur Hälfte der Eingabe prüfen
for (int i = 2 ; i <= Zahl / 2; i++)
{
// Teilbarkeit mit modulo testen
// wenn kein Rest → Eingabe ist teilbar → false zurückgeben
if (Zahl % i == 0) return false;
}
// keine Teiler gefunden → Primzahl = true zurückgeben
return true;
}
Letzte Aktualisierung: