Primzahl

Mind_21

Mitglied
Hallo mein Programm sollte Primzahltest durchführen
ich weiss nicht genau was falsch gemacht habe
aber bei den Zahlen 9 oder 25 ' die keine Primzahl sind' meine Progrmm "ist Primzahl" liefrt
kann mir jemanden hefen den fehler zu lokalisieren
Java:
if (zahl == 1) {
				return  false;
			} 
			else if (zahl == 2) {
				return true;
				
			}
			else if (zahl % 2 == 0) {
				return  false;
			} else {
				for (int i=2; i<=zahl; i++) {
					if (zahl%i==0) {
						return false ;}
					else 
						return  true ;}
				}
		
			
	


			return true ;
 
Mit return beendest du die Methode, das bedeutet, deine Schleife läuft nur genau einmal durch, d.h. du prüfst immer nur zahl % 2 == 0 (was du zuvor ja übrigens auch schon geprüft hast) ...
 
Schau dir das hier mal an, dass geht auch um ein vielfaches schneller.
Der Miller-Rabin Primzahlen-Test als Java-Applet
Und außerdem währe es schlauer dass so zu schreiben:
Java:
!(n % 2 != 0)
Oder du frägst gleich am anfang ob ob die zahl größer ist als 0, weil sonst kriegst du da auch noch ein Problem, wenn die Zahlen negativ werden.
 
Zuletzt bearbeitet:
@XHelp
Ich weis es nicht mehr, aber ich glaube ich hab da mal nen guten Grund gelesen.

Ich will kein OT starten, aber ich kann mir keinen Grund vorstellen, warum das besser sein sollte.
Weiß zwar nicht, was JVM von Codeoptimierung hält, aber es kann sogar durch aus sein, dass beide Ausdrücke in Maschinencode identisch aussehen.
 

Zurück
Oben