Primzahl

rushed

Grünschnabel
Hallo bin neu hier
irgendwie hab ich hier nen Fehler bei meinem Programm gemacht

Code:
public class Zahl{
private int z;

public zahl(int z){
	z=z;
}

public boolean istPrimzahl(){
for(int i=2; i<=z; i++){
if (z%i==0)
return false;
}
return;
}

public static void main(String[]args  ){
Zahl z = new Zahl(47);
if (z.istPrimzahl());
System.out.println(z.z+" ist Primzah!")
}
}
Wieso sagt er das jede Zahl ne Primzahl ist Wo hab ich da den Fehler gemacht.
Danke für Antworten
 
halllo.

1.
Java:
 z=z;
du muss z mit this zuweisen. deine z=z bringt ja gar nichts.
2.
Java:
if (z.istPrimzahl());
nachdem die if - Anweisung die Überprüfung durchgeführt hat, macht sie nichts. Das Simikolon sagt aus, dass nichts weiter folgen soll. Lass es also weg ;)
3.
Java:
return
Dürfte nicht gehen? eher return true;
4.
Java:
for(int i=2; i<=z; i++)
du meinst sicherlich i<z, denn wenn er bis z zählt, dann ist die Zahl immer teilbar: 47 / 47 geht.

So müsste es klappen, hof ich hab nichts übersehen.
gruß
Marcel
 
Liegt an dieser Stelle:
Code:
for(int i = 2; i<=z; i++){
if(z%i==0){
//...

Eine Primzahl ist nur durch sich selbst und 1 teilbar. Und du inkrementierst deinen Index bis z. z%z == 0.

Es reicht nebenbei bemerkt bis z/2 zu testen. Alles was danach kommt, kann kein Teiler von z mehr sein.

MfG
Daniel

//EDIT: Ich sollte schneller tippen ;)
 
Stimmt auffallend ;)
Erst zu langsam tippen, und dann auch noch falsche Gerüchte in die Welt setzten ...
Ich geh erstmal in die Ecke und schäme mich.
 
Zurück