Java Primzahlen Programm
Hey Leute, ich habe mal wieder eine Java-Aufgabe, bei welcher ich den Fehler nicht finde. Ich hoffe ihr könnt mir irgendwie weiterhelfen.
public class PrimeNumbers {
static int x = 1000;
private static boolean[] Primes = new boolean[x];
// Hier ist der "statische Konstruktor"
static {
}
private static boolean checkPrime(int number) {
return false;
}
public static boolean isPrime(int number) {
int limit=1000;
int zahl;
int zaehler;
boolean primzahl;
for (zahl = 2; zahl <= limit; zahl++) {
primzahl = true;
for (zaehler = 2; zaehler <= zahl/2; zaehler++) {
if (zahl % zaehler == 0) {
primzahl = false;
break;
}
}
if (primzahl) {
return true;
}
}
return false;
}
Die Primzahlen, welche zu überprüfen sind werden in einer anderen Methode übergeben und abefragt. Ich habe hier das Problem, dass er mir entweder immer true oder immer false returned, egal ob es nun eine Primzahl ist oder nicht. Ich komme einfach nicht weiter, egal wie ich es drehe und wende. Ich hoffe ihr könnt mir weiterhelfen.
Grüße Dubsepp
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.
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.
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?
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!
Wunderbar, vielen, vielen Dank. Hat super funktioniert!
Hab nach langer Zeit den Wald vor lauter Bäumen nicht gesehen. Danke für die Hilfe!