N
Nolath
Bekanntes Mitglied
- Dabei seit
- 23.10.2006
- Beiträge
- 1.121
- Reaktionspunkte
- 1
Ich fange momentan mit C++ an
Der nachfolgende Code ist für ein Programm, das auf eine eingegebene Zahl die nächste folgende Primzahl finden soll.
Bis sieben geht das auch, aber danach gibt es Probleme (es dauert dann einfach ewig, aber es passiert nichts)
Hat jemand eine Idee, woran das liegen könnte?
Der nachfolgende Code ist für ein Programm, das auf eine eingegebene Zahl die nächste folgende Primzahl finden soll.
Bis sieben geht das auch, aber danach gibt es Probleme (es dauert dann einfach ewig, aber es passiert nichts)
Hat jemand eine Idee, woran das liegen könnte?
Code:
#include<iostream>
#include<cmath>
using namespace std;
int main() {
cout << "Berechnung der ersten Prinzahl die groesser bzw. gleich der eingegebenen Zahl ist\n";
long z; //z als long deklarieren, z ist die zu untersuchende zahl
do { //endlosschleife, bis eine passende zahl eingegeben wird
cout << "Zahl groesser 3 eingeben: ";
cin >> z;
} while( z <= 3);
if (z % 2 == 0) { //feststellen ob z gerade ist (restwerdivision)
++z;
}
bool gefunden = false; //gefunden als bool (wahr/falsch) deklarieren
do {
/* bis limit muss gerechnet werden, sqrt arbeitet nur mit double,
also muss der Typ explizit umgewandelt werden. */
long limit = 1 + static_cast<long>(sqrt(static_cast<double>(z)));
long rest;
long teiler = 1;
do {
teiler += 2;
rest = z % teiler;
} while( rest > 0 && teiler > limit);
if( rest > 0 && teiler >= limit)
gefunden = true;
else
z +=2;
} while(!gefunden);
cout << "Die nächste Primzahl ist " << z << endl;
system("Pause");
}