"Primzahlen-prüfer" programmier (C#)?

3 Antworten

Du setzt den zähler nie zurück auf 0. So wird er bei Folgeiterationen auch nicht auf den Wert 2 kommen.

MrSchatten 
Fragesteller
 06.05.2022, 18:58

Danke!

0

Du solltest die Zeile

int zähler = 0;

innerhalb der while-Schleife haben... und zwar direkt vor dem "for..."

MrSchatten 
Fragesteller
 06.05.2022, 18:57

Wow. Hat funktioniert! Könnten Sie mir bitte erklären was für einen Unterschied das gemacht hat? Danke!

0
regex9  06.05.2022, 19:01
@MrSchatten

In deinem Fall wird bei jeder Iteration von while auf dieselbe Variable zähler zugegriffen. Das heißt auch, sie merkt sich den Wert vonn vorherigen Iterationen.

Bei der Zahl 1 hat sie den Wert 1. Bei der Zahl 2 wird die 1 noch einmal mit der Anzahl an ganzen Teilern für 2 aufgerechnet.

Wenn die Variable innerhalb des Schleifenkörpers steht, wird sie mit jeder Iteration neu angelegt. In jeder Iteration startet sie beim Wert 0.

0
GreeboU  06.05.2022, 19:01
@MrSchatten

in der Variablen "zähler" steht nach der for-Schleife duch wieviele Zahlen "zahl" teilbar war... wenn die nächste Zahl geprüft wird... also beim nächsten Durchlauf der while-schleife, muss "zähler" demnach wieder auf 0 gesetzt werden, sonst zählt man einfach bei der vorherigen Zahl weiter

0
Von Experte PhotonX bestätigt

Die for Schleife wird direkt verlassen. Prüfer und Zahl sind 1.

MrSchatten 
Fragesteller
 06.05.2022, 18:54

Stimmt, hätten Sie einen Vorschlag wie man das lösen könnte?

0
regex9  06.05.2022, 18:57
@MrSchatten

Nein, die Antwort stimmt nicht. Eine Schleife wird so lange ausgeführt, bis die Bedingung im Schleifenkopf nicht mehr zutrifft. Da die Aussage 1 <= 1 wahr ist, hast du beim Wert 1 einen Durchlauf.

1