Hi, habe hier ein Programm welches aus einem Feld mit beliebig vielen Zahlen die groesste Primzahl herausliest und ausgibt. Das klappt nur bei Arrays die kleiner als 8 sind. Ab 8 wird immer "0" ausgegeben. Ich finde den Fehler leider überhaut nicht, hoffe dass ihr mir helfen könnt ..
mfg
Java:
publicclassGroesste_Prim{// Fehler: ab 8 Indizes wird immer 0 ausgegeben !!publicstaticintbiggestPrim(int[] array){int groessteprim =0;int[] primzahlen =newint[array.length];int index =0;// Schritt 1: Primzahlen heraussuchen und in ein eigenes Array schreibenfor(int i =0; i < array.length; i++){boolean istprim =true;if(array[i]==1)
istprim =false;//teilerschleifefor(int j =2; j < array.length; j++){if( array[i]% j ==0)
istprim =false;}//schreibe Primzahl in Arrayif(istprim ==true){
primzahlen[index]= array[i];
index++;}}// Schritt 2: Groesste Primzahl heraussuchenfor(int i =0; i < primzahlen.length; i++){if(groessteprim < primzahlen[i])
groessteprim = primzahlen[i];}return groessteprim;}publicstaticvoid main (String args[]){//Abfrage: Anzahl der ZahlenSystem.out.println("Anzahl der Zahlen:");int anzahl = io.read_int();int[] array =newint[anzahl];//Eintragen der Wertefor(int i =0; i < anzahl; i++){System.out.println("Wert-Nr."+(i+1)+":");
array[i]= io.read_int();}//Suchen der größten Primzahlint prim =biggestPrim(array);System.out.println("\nGroesste Primzahl: "+prim);}}
und hier halt noch die Ausgaben:
einmal mit einem Array der Groesse 7:
Java:
Anzahl der Zahlen:7Wert-Nr.1:3Wert-Nr.2:4Wert-Nr.3:5Wert-Nr.4:6Wert-Nr.5:7Wert-Nr.6:8Wert-Nr.7:9GroesstePrimzahl:7
und mit einem Array der Groesse 8:
Java:
Anzahl der Zahlen:8Wert-Nr.1:2Wert-Nr.2:3Wert-Nr.3:4Wert-Nr.4:5Wert-Nr.5:6Wert-Nr.6:7Wert-Nr.7:8Wert-Nr.8:9GroesstePrimzahl:0
Davon abgesehen, würde es nicht auch ausreichen, wenn man sich in der Methode biggestPrim das Primzahlen-Array spart und immer, wenn die gefundene Zahl eine Primzahl ist direkt vergleicht ob sie größer ist, als die vorher gefundene?
In der Teilschleife fehlt auf jedenfall noch eine Bedingung, aber würde da j != array schon ausreichen, um jede mögliche Primzahl zu entdecken?