
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 Variable EingabeMax, die Zahlen sollen nicht größer als 1000 sein:
1 | int EingabeMax = 1000; |
Der setup-Teil startet den Seriellen Monitor und zeigt die Aufforderung an, eine Zahl einzugeben.
1 2 3 4 5 6 7 8 9 10 11 | void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); Serial.println(“Zahl eingeben:”); Serial.println(“Maximum ist: ” + String(EingabeMax) + “!”); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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”); } } } |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
- Einmaleinsreihen — Anzeige mit Keyes-Fernbedienung
- Fußballtipp
- Geldautomat
- Kniffel — EEPROM verwenden
- Lottozahlen — Anzeige im Seriellen Monitor
- Satzmaschine
- Städte-Info
- Teiler bestimmen
- Vokale zählen
Letzte Aktualisierung:






