Primzahlen errechnen



  • ich habe mir einen Code geschrieben, der Primzahlen berechnet. Leider stürzt nun das Programm immer wieder ab. Warum?

    #include <iostream>
    using namespace std;
    int main();
    /////////////////////////////////////////////////////////////
    int aZahl;
    //Die aZahl bedeutet aktuelle Zahl und wird in jedem schleifendurchgang einmal erhöht
    
    int Primzahlen[1000];
    //1000 Speicherplätze für Primzahlen
    
    int alle = 0;
    //wird dazu benutzt, in einer For - Schleife in der Primzahlen[] alle abzuklackern
    
    int primzahlFrage = 0;
    ///////////////////////////////////////////////////////////////
    
    main()
    {
        //die Vorarbeit, alle primzahlenspeicher auf 0 zu setzen!
        int leer = 0;
        for(;leer<100;)
        {
            Primzahlen[leer] = 0;
            leer++;
        }
        ///////////////////////////////////////////////////////////
        Primzahlen[0] = 2;    //Die erste Primzahl!    also aZahl == 2
        aZahl = 2;
        while(Primzahlen[100] == 0)    //wenn die 1000ste nicht besetzt ist, dann...
        {        //jetzt kommt die eigentliche arbeit
    
            alle = 0;
            for(;alle < 100;)
            {
                    if ((aZahl % Primzahlen[alle]) == 0)
                    {                //nun ist es keine Primzahl
                                    primzahlFrage = 1;
    //ist es eine Primzahl?
    //wenn  primzahlFrage == 1, dann keine Primzahl
    //wenn  primzahlFrage == 2, dann Primzahl
                                    break;
                                    //schleife wird beendet, da es keine Primzahl ist
                    }
                    if (Primzahlen[alle] == 0)    //wenn es zu einer nicht angetanenen dran ist
                    {
                                    primzahlFrage = 2; //jetzt ist es eine Primzahl!
                                    break;
                    }
                    alle++;
            }
            if (primzahlFrage == 2) //wenn es eine Primzahl ist...
            {
                    Primzahlen[alle] = aZahl;        //neue Primzahl wird zugewiesen...
                    cout << Primzahlen[alle] << "\n";          //und hingeschrieben...
            }
            primzahlFrage = 0;         //...weil jetzt nicht koordinierbar...
            alle = 0;
            aZahl++;
        }
        cin.get();
        return 0;
    }
    


  • #include <iostream>
    using namespace std;
    int main();
    /////////////////////////////////////////////////////////////
    int aZahl;//wieso global?
    
    int Primzahlen[1000];//wieso global?
    
    int alle = 0;//wieso global?
    int primzahlFrage = 0;//wieso global?
    
    main()
    {
        int leer = 0;//kann in die for anweisung
        for(;leer<100;)//du hast 1000 elemente nicht 100
        {
            Primzahlen[leer] = 0;
            leer++;//du benutzt ne forschleife, du kannst das auch ruhig in die for anweisung stecken
        }
        Primzahlen[0] = 2;
        aZahl = 2;
        while(Primzahlen[100] == 0)//schon wieder steht hier nicht 1000
        { 
    
            alle = 0;//kann in die nächste for anweisung als erstes argument
            for(;alle < 100;)//1000 nicht 100
            {
                    if ((aZahl % Primzahlen[alle]) == 0)
                    {                
                        primzahlFrage = 1;//wieso? den wert benutzt du garnicht
                        break;
                    }
                    if (Primzahlen[alle] == 0)//sinn?
                    {
                                    primzahlFrage = 2;
                                    break;
                    }
                    alle++;//kann auch in die for anweisung
            }
            if (primzahlFrage == 2)//wieso packst du das nicht direkt in die for schleife?
            {
                    Primzahlen[alle] = aZahl; 
                    cout << Primzahlen[alle] << "\n";    
            }
            primzahlFrage = 0;
            alle = 0;
            aZahl++;
        }
        cin.get();
        return 0;
    }
    


  • bane4 schrieb:

    Leider stürzt nun das Programm immer wieder ab. Warum?

    Weil modulo Null genausowenig erlaubt ist wie geteilt durch Null.


Anmelden zum Antworten