int EingabeMax = 1000;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) ;
delay(1000);
Serial.println("Zahl eingeben:");
Serial.println("Maximum ist: " + String(EingabeMax) + "!");
}
void loop()
{
while (Serial.available() > 0)
{
int Zahl = Serial.parseInt();
// Enter/Senden gedrückt
if (Serial.read() == '\n')
{
// 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(Zahl));
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: