Problem mit Primzahlen Programm



  • Hallo

    ich mache gerade den Kurs: Volkards c++ Kurs, den ich von dieser Seite heruntergeladen habe.

    In Lektion 14 wird ein Programm beschrieben das Zahlen überprüft ob es eine Primzahle ist.

    Leider war nur die Funktion gegeben als Lösungsvorschlag.

    Daraus habe ich ein Programm geschrieben. Dieses gibt leider nur bei der Zahl 1 die Ausgabe das es eine Primzahl ist. Bei allen anderen nicht. Bei alles anderen geht er in den else Zweig.

    Könnte mir vielleicht jemand helfen?

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    bool istPrim(int Kandidat); // Funktion
    
    int main()
    {
        int z; 
        cout << " Welche Zahl soll überprüft werden?";
        cin >> z; //Einlesen der Zahl
        istPrim(z); // Übergabe an Funktion
        if (z==true)
            cout <<z << ": das ist eine Primzahl "<< endl;
        else 
             cout <<z << ": das ist keine Primzahl "<< endl;
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    
    bool istPrim(int Kandidat)
    {
       for(int teiler=2;teiler<=Kandidat-1;teiler=teiler+1)
               if(Kandidat%teiler == 0)
                   return false;
               return true;
               }
    

    P.S. kann man einer Funktion auch einen Bereich Übergeben also z.B. 1-30 und daraus soll er dann nur die Primzahlen auf den Bildschirm schreiben?
    Oder muss man dazu wieder eine Schleife schreiben?

    Vielen Dank im vorraus

    MFG

    Volvicer



  • Erstmal: 1 ist keine Primzahl! 🙂

    Zu Deinem Code:
    Der Fehler liegt nicht in der (wenn auch ziemlich komisch aussehenden) istPrim-Funktion, sondern in Deinem Hauptprogramm.

    istPrim(z) liefert das Ergebnis, speichert es aber nirgends. Deswegen kannst Du zum Beispiel in der if-Anweisung prüfen:
    if (istPrim(z)) { .. }
    statt
    if (z == true)
    was übrigens für z == 1 wirklich == true ist : )

    Gruß

    turing



  • Vielen dank für deine Antwort jetzt fuktioniert es.

    MFG

    Volvicer


Anmelden zum Antworten