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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 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: