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