Primzahlen in Array



  • Hallo,

    meine bisherige Erfahrung mit C++ beläuft sich auf wenige Wochen im 1. Semester. Als parallele Lektüre verwende ich C++ Programmierung bei Wikibooks und Grundkurs C++.

    Das aktuelle Thema ist Felder und Zeichenketten. Das nachfolgende Programm, soll die 1000. Primzahl (9859) ausgeben, indem es Primzahlen in einem Array speichert und jede neue Primzahl errechnet, indem es durch jede bisher ermittelte Primzahl dividiert.

    Ich habe mir Gedanken gemacht wie es funktionieren könnte, leider komme ich aber von alleine auf keinen neuen Ansatz weil es so nicht funktioniert.

    #include <iostream>
    using namespace std;
    
    int main(void) {
    
            long int feld[1000];
            int pos = 0, i, prim=2;
    // Primzahl 2 = Feldwert 0
            feld[pos]=prim;
            for (i = 2; i < 1000; i++) {
    
                    if (i % feld[pos] != 0) {               // Wenn i nicht teilbar durch alle Zahlen an jeder Position im Array
                            pos++;
                            feld[pos] = i;                          // Zahl 'i' an der nächsten Position im Array speichern
    
                            if (pos == 1000) {                                      // Ausgabe Position 1000 im Array
                                    cout << i << endl;
    
                            }
    
                    }
    
            }
            return 0;
    }
    

    Da ich wahrscheinlich noch nicht genau verstanden habe, wie Arrays funktionieren, wären meine Fragen dazu: Wie gehe ich eine Position weiter? Wie greife ich auf alle bisher gespeicherten Zahlen zu?

    Im Voraus vielen Dank für jede Hilfestellung.



  • Funktioniert nicht ist keine Fehlerbeschreibung!

    Durch wieviele Primzahlen wird jedes i bei dir geteilt?
    Stehen in feld nur Primzahlen?
    Benutze einen Debugger!



  • Du teilst immer nur durch die letzte Primzahl.
    Zudem testest du nur die Zahlen bis 1000 - also weit weg von 9859.



  • die 1000'ste Primzahl ist 7919


Anmelden zum Antworten