Java Primzahlen Programm

3 Antworten

for (zaehler = 2; zaehler <= zahl/2; zaehler++) { if (zahl % zaehler == 0) { primzahl = false; break; }

Angenommen, du erwischt eine Primzahl, die bool-Variable wird an dieser Stelle auf "false" gesetzt und die Schleife bricht ab. Anschließend wird die Variable in der äußeren Variable wieder auf true gesetzt und das Spiel geht von vorne los. primzahl ist also immer true.

Davon mal abgesehen übergibst du der Methode "isPrime" einen Parameter "number", den du aber niemals verwendest. Die Funktion weiß also gar nicht, welche Zahl sie prüfen soll.

Dubsepp 
Fragesteller
 27.05.2015, 19:21

Okay, danke für deine Antwort!

0

isPrime überprüft bei dir gar nicht number, ob sie prim ist, sondern alle Zahlen von 2 bis 1000.

Der Parameter number wird in der Funktion isPrime gar nicht weiter verwendet.

Sobald eine Zahl gefunden wird, die prim ist, steigt das Programm mit true aus, also im Grunde schon bei der 2. Die innere Schleife wird gar nicht durchlaufen.

Lass die äußere Schleife mal weg und ersetze zahl druch number.

Woher ich das weiß:Studium / Ausbildung – Mathematik
Dubsepp 
Fragesteller
 27.05.2015, 19:25

Wunderbar, vielen, vielen Dank. Hat super funktioniert!

Hab nach langer Zeit den Wald vor lauter Bäumen nicht gesehen. Danke für die Hilfe!

1

Dir ist klar, dass du nirgends den Parameter "number" verwendest? Dann ist es auch kein Wunder. Der Parameter soll doch die Zahl sein die du auf Primzahl prüfen willst. Wenn du sie aber nicht benutzt kann er ja schlecht auf ein sinnvolles Ergebnis kommen oder?

Dubsepp 
Fragesteller
 27.05.2015, 19:19

Ja da hatte ich gerade was ausprobiert, aber das war mir bewusst. Aber auch wenn ich es mit einbau, kommt nichts raus :/ Danke für deine Antwort!

0
ceevee  27.05.2015, 19:22
@Dubsepp

for(teiler= 2; teiler< number; teiler++)

{

  if( number % teiler == 0) return false;

}

return true;

Ungefähr so müsste ein Primzahlalgorithmus aussehen.

1
Dubsepp 
Fragesteller
 27.05.2015, 19:31
@ceevee

Konnte es nun lösen.

Danke für deine Antwort!

0