Das Programm soll die Primzahlen von 2 bis zur eingegebenen Zahl im Seriellen Monitor anzeigen. Außerdem wird eine Obergrenze für die eingegebene Zahl festgelegt. Die Variable int ist auf 32767 begrenzt und die Untersuchung größerer Zahlen benötigt sehr viel Rechenzeit.
So sieht es aus:
Für diese Anleitung brauchst du nur den Arduino.
Definiere die Variablen:
int Zahl;
int EingabeMax = 1000;
Der setup-Teil startet den Seriellen Monitor und zeigt die Aufforderung an, eine Zahl einzugeben.
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
Serial.println("Zahl eingeben:");
Serial.println("Maximum ist: " + String(EingabeMax) + "!");
}
Der loop-Teil. Beachte die Kommentare.
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!");
}
// \u00df -> ß
else Serial.println("Die Eingabe ist zu gro\u00df!");
}
}
Der Funktion Primzahl wird die zu untersuchende Zahl übergeben. Weil Teiler, die größer als die Hälfte der Zahl sind, nicht möglich sind, wird auch nur bis zur Hälfte geprüft.
Die Primzahlen werden mit einer ➨bool-Funktion bestimmt.
Die Teilbarkeit wird mit ➨modulo ermittelt.
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;
}
Verwandte Anleitungen:
- Einmaleinsreihen anzeigen
- Fußballtipp
- Geldautomat
- Laplace-Versuch
- Lottozahlen - Anzeige im Seriellen Monitor
- Satzmaschine
- Schneckenrennen
- Städte-Info
- Taschenrechner Grundrechenarten
- Teiler bestimmen
- Vokale zählen
- Vollkommene Zahlen
- Würfeln Serieller Monitor
Letzte Aktualisierung: