Sieb des Eratosthenes funktioniert nicht



  • ich will ein Sieb des Eratosthenes programmieren

            bool[] nonprime = new bool[1000000];  // all elements are false (zero) 
            nonprime[0]=true;      //der Compiler meckert, dass er nonprime nicht kennt
            nonprime[1]=true;         
            int pn = 2;
            do
            {
                for (int n = pn* pn; n< 1000000; n = n + pn)
                nonprime[n] = true;
                do { pn++; } while (nonprime[pn] == true); //find next prime
            } while (pn <= 1000);
    
    

    wieso kennt der Compiler nonprime nicht? Kann mir jemand weiterhelfen? Vielen Dank.



  • @chicken25 wie lautet die genaue Fehlermeldung.

    Der Compiler gibt meist auch Zeile und Spalte an, wo er einen Fehler findet.
    Da du nicht das gesamte Programm zeigst, stimmt das dann aber nicht.

    PS. Ersetze mal das [] in Zeile 1 durch *

    PPS. nimm lieber std::vector

    PPPS. Danke Mechanics



  • @DirkB sagte in Sieb des Eratosthenes funktioniert nicht:

    PPS. nimm lieber std::vector

    In C#?



  • @chicken25 sagte in Sieb des Eratosthenes funktioniert nicht:

    wieso kennt der Compiler nonprime nicht?

    Weil dein Code schätzungsweise irgendwo steht, wo keine Statements wie nonprime[0]=true; usw. erlaubt sind, also nicht in einer Funktion.

    Gewöhn dir besser an, vollständigen Code zu zeigen, wenn du eine Frage hast. Dann kannst du besser gehelft werden.

    using System;
    
    namespace Codefun
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool[] nonprime = new bool[1000000];
                nonprime[0] = true;
                nonprime[1] = true;
                
                for(int pn = 2; pn <= 1000;) {
                    for (int n = pn * pn; n < 1000000; n += pn)
                        nonprime[n] = true;
    
                    do ++pn; while (nonprime[pn]);
                }
            }
        }
    }
    
    1>------ Build started: Project: Codefun, Configuration: Debug Any CPU ------
    1>  ConsoleApp3 -> C:\Users\sword\source\repos\Codefun\bin\Debug\Codefun.exe
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
    


  • @Swordfish sagte in Sieb des Eratosthenes funktioniert nicht:

    Gewöhn dir besser an, vollständigen Code zu zeigen, wenn du eine Frage hast. Dann kannst du besser gehelft werden.

    Und Fehlermeldung kopieren statt "geht nicht" wäre auch sinnvoll.