Primzahlen ausgeben



  • Ok mit den Hinweisen werd ichs schon irgendwann rauskriegen..
    ich bleib noch dran.



  • @nochSoEiner keine globalen Variablen (wie das merkwürdige x)



  • ok so weit so gut aber der Kollege meinte doch ich soll ne schleife Verwenden in der isPrime() war da nur der header falsch?
    oder genauer nur das <= 500???



  • Für Heute leg ichs auf Eis aber Morgen hagelts Primzahlen.
    Bis dann und danke



  • eine for schleife passt da besser denke ich @nochSoEiner dann fällt auch die globale variable weg.



  • ja, ich denke mir fehlt noch n bischen die klare Sicht.. Aber wenigstens hab ich mal ne Funktion mit bool gemacht und aufgerufen
    da bin ich schon relativ glücklich.. denn Rest pack ich auch noch



  • @nochSoEiner sagte in Primzahlen ausgeben:

    ok so weit so gut aber der Kollege meinte doch ich soll ne schleife Verwenden in der isPrime() war da nur der header falsch?
    oder genauer nur das <= 500???

    wenn du wissen willst, ob die Zahl 13 prim ist, brauchst du keine 500.

    Naiv betrachtest du, ob eine Zahl zwischen 1 und 13 (also von 2 bis 12) ganzzahliger Teiler von 13 ist.

    Dass sie prim ist, kannst du erst sagen, wenn du (fast) alle Zahlen getestet hast.



  • Überlege dir als erstes, was du eigentlich wissen willst.

    Ist deine Fragestellung also:
    a) Ist eine bestimmte Zahl eine Primzahl?
    b) Welche Zahlen im Bereich 1..n sind Primzahlen?

    Die Antwort auf Frage b) kannst du mit einer Schleife und der Fragestellung a) beantworten:
    Für alle Zahlen i von 1 bis n: wenn mit Hilfe von a) festgestellt wird, dass i prim ist, gib i aus.

    Also fang also erst einmal an, die Frage für eine einzige Zahl zu beantworten, also Aufgabe a) zu lösen. Es ist immer eine gute Idee, gleich einen Test zu schreiben. Zum Beispiel so wie hier in meinem Beispielcode unten. Bearbeite NUR den Bereich, wo "bitte ausfüllen" steht. Ändere nichts außerhalb (außer du brauchst weitere Header wie zB <cmath>, falls du eine Wurzel ziehen willst).

    #include <iostream>
    #include <utility>
    
    bool isPrime(int n) {
        // hier musst du testen, ob die Zahl n eine Primzahl ist
        // bitte ausfüllen
    }
    
    bool test_isPrime() {
        auto allOk = true;
        std::pair<int, bool> testData[] = {{1, false},  {2, true},   {3, true}, {4, false},
                                           {5, true},   {6, false},  {7, true}, {9, false},
                                           {181, true}, {183, false}};
        for (const auto &p : testData) {
            auto result = isPrime(p.first);
            if (result != p.second) {
                std::cout << std::boolalpha << "isPrime-Berechnung falsch für " << p.first
                          << ": erwartet war " << p.second << ", erhalten: " << result << "\n";
                allOk = false;
            }
        }
        if (allOk)
            std::cout << "Alle Tests von isPrime erfolgreich!\n";
        return allOk;
    }
    
    int main() {
        test_isPrime();
    }
    

    Du kannst dir alternativ hierzu einen anderen Weg ausdenken, wie du die Primzahlen von 1..n alle zusammen berechnest. Ich würde an deiner Stelle aber erstmal mit obigem Weg anfangen. Wenn du da fertig bist, geben wir gern weitere Hinweise.



  • Ok jetzt kommt noch n array hinzu 😃 da freu ich mich schon drauf aber ist echt ungelogen bin schon seit gestern (inder Nacht!!!)
    Wach..
    Und bool Erbsenhirn(lernkapazität <1 && Schlafmangel >500){
    kein Plan = kein Sinn return to bed
    }
    xD
    zieh mir Akte x rein und geh jetz pennen liebe Leute:
    ist n geiles Forum, hätt nicht so viele posts erwartet.
    peace



  • @nochSoEiner Das Array ist in der Funktion, die IsPrim testet.
    Diese Funktion braucht dich derzeit überhaupt nicht zu interessieren.