n-te Primzahl
-
Hallo,
ich habe gerade versucht ein Programm zu schreiben, dass mir die n-te Primzahl berechnet. Allerdings gibt es ein Problem. 9 und 15 werden zum Beispiel als Primzahlen erkannt... bzw. aufgeführt. Ich hatte dann 9 & 15 als Parameter an die Funtkion checkPrime übergeben und die Funktion gab mir zurück, dass es keine Primzahlen seien... nun bin ich etwas überfordert und weiß nicht, wo mein Fehler ist und ich ihn suchen soll.
#include <iostream> using namespace std; unsigned int getInput() { unsigned int eingabe; cout << "Die wievielte Primzahl moechten Sie wissen?" << endl; cin >> eingabe; cout << endl; return eingabe; } int checkPrime (unsigned int number) { bool check = 0; if (number%2==0) check = 1; else { for (int i = 3; i < number && check==0; i+=2) { if (number % i == 0) check == 1; } } return check; } int main() { char dumb; unsigned int input; unsigned int prime; unsigned int counter = 2; input = getInput(); for (int i=5;counter!=input; i+=2) { if (checkPrime(i)==0) { counter++; cout << i << endl; } } cin >> dumb; return 0; }
-
alt
check == 1;neu
check = 1;
-
für bool nimmt man true und false. Zuweisung vs. Vergleich.
-
so vll eher:
#include <iostream> using namespace std; unsigned int getInput() { unsigned int eingabe; cout << "Die wievielte Primzahl moechten Sie wissen?" << endl; cin >> eingabe; cout << endl; return eingabe; } bool is_prime (unsigned int number) { if(number < 2) return false; if(number == 2) return true; if (number%2==0) return false; for (int i = 3; i < number; ++i) { if (number % i == 0) return false; } return true; } int main() { unsigned int counter = 0; unsigned int input = getInput(); for (int i=1; counter != input; i += 2) { if (is_prime(i)) { counter++; cout << i << endl; } } char dumb; cin >> dumb; }bb
PS:
for (int i = 3; i < number; ++i)inis_prime:
die abbruch-bedingung sollte schon die (abgerundete) wurzel von number sein