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 | bool Stopp = true; void setup() { // Seriellen Monitor starten Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} Serial.println(“Die ersten 4 vollkommenen Zahlen:”); Serial.println(“———————————”); } bool Primzahl(float Zahl) { // zum Testen nach int umwandeln int PruefZahl = round(Zahl); // nur bis zur Hälfte der Eingabe prüfen for (int i = 2 ; i <= PruefZahl / 2 ; i++) { // Teilbarkeit mit modulo testen // wenn kein Rest ⇒ Eingabe ist teilbar ⇒ false zurückgeben if (int(PruefZahl) % i == 0) return false; } // keine Teiler gefunden -> Primzahl = true zurückgeben return true; } void loop() { while (Stopp) { /* eine vollkommene Zahl ist die Summe ihrer Teiler (ausgenommen 1 und die Zahl selbst) die ersten 4 vollkommenen Zahlen */ for (int i = 2; i < 8; i++) { /* Formel zur Berechnung: 2^(i‑1) * (2^i — 1) wobei der Wert des Terms (2^i) — 1 eine Primzahl sein muss */ // Wert des Terms pow(2, i) — 1 auf Primzahl untersuchen bool Suche = Primzahl(pow(2, i) - 1); // der Wert des Terms ist eine Primzahl (Suche = true) // -> vollkommene Zahl gefunden if (Suche) { // Ergebnis ist eine Zahl vom Typ float -> muss gerundet werden Serial.println(round(pow(2, (i - 1)) * (pow(2, i) - 1))); } } Serial.println(“————————————”); Stopp = false; } } |
Letzte Aktualisierung: