Zahl einlesen Primzahl ja oder nein in C++

Hallo, Ich versuche schon seit einer Woche als Hausaufgabe in C++ eine Zahl einzulesen und dann auszugeben ob es nun eine Primzahl ist. Ich habe zwar schon einige Lösungen gefunden wo ich mit zum Beispiel break; aus der Schleife aussteige wenn es eine Priemzahl ist aber es heißt das, dass unschöner Programmierstiel ist. Ich soll mit der Variable i die man unten im Code sieht herausfinden ob es eine Priemzahl ist aber so wie unten gezeigt klappt es einfach nicht, ich habe schon so viel versucht.
Ich hoffe ihr könnt mir weiterhelfen.
Mit freundlichen Grüßen ETron

#include

using namespace std;

int main()
{
int i,z;
char fr;
do
{
cout > z;
if (z>1)
{
i=2;
while (z%i==0)
{
i=i+1;
}
if (i%2==0)
{
cout > fr;
}
while (fr==‚j‘);
return 0;
}

Hallo,

deine innere while wird zur Endlosschleife sobald du eine Primzahl angibst. Du musst eine Obergrenze für deinen Primzahltest festlegen.

i=2;

while(z%i==0 && i

while(z%i!=0 && i

Hallo ETron,

das Ziel des Algorithmus sollte sein, heraus zu finden, ob z einen Teiler ungleich 1 und sich selbst hat.

Die Initialisierung von i=2 ist sehr gut :smile:

Die obere while-Schleife sollte aber auf ungleich testen:
while(z%i != 0)
Damit wird i immer weiter erhöht, bis schließlich ein Teiler von z gefunden wird.
Und spätestens z selber ist ein Teiler von z, d.h. die while-Schleife wird beendet.

Die Entscheidung, ob z prim ist, folgt nun aus dem Wert von i: falls i==z, so ist z prim (weil die while-Schleife als ersten Teiler von z eben z selber gefunden hat.
Ist i