# Primzahlen im Array ausgeben



## lilum (24. Jun 2015)

Hallo ich habe folgende Aufgabenstellung: 

"Implementieren Sie eine Java-Methode gibPrimzahlenAus(), die eine Obergrenze grenze alsParameter bekommt und ein Array mit allen Primzahlen im Bereich von 2 bis grenze auf derKonsole ausgibt.Bauen Sie das Programm modular auf, d.h. implementieren Sie mindestens eine weitereHilfsmethode, die bestimmte Aufgaben erledigt und von der Methode gibPrimzahlenAus()verwendet wird."

Und mein Code sieht momentan so aus: 


```
public class Sieb {

    static private int maxNumber;

    static public void gibPrimzahlAus(int max) {
        maxNumber = max;

        boolean[] istPrimzahl = new boolean[max];

        for (int i = 0; i < max; i++) {
            istPrimzahl[i] = true;
        }
        

        for (int i = 2; i < max; i++) {
            if (istPrimzahl[i] == true) {
                System.out.println("Primzahl: " + i);
            }
        }

}

    public static void main(String[] args) {

         gibPrimzahlAus(100);

    }
}
```

Nur habe ich das Problem, dass mir das Programm nicht die Primzahlen bis 100 ausgibt, sondern ALLE zahlen von 2-100 
Ich sitze schon ewig daran und versuche es zu lösen, funktioniert aber alles nicht 

KANN MIR BITTE BITTE JEMAND HELFEN??;(


----------



## Robinson97 (24. Jun 2015)

Das liegt daran, das du in der ersten Schleife alle Indexe auf true setzt und in der zweiten for Schleife die Werte nach true prüfst (Die dann natürlich alle true sind). Die beste Art dies zu lösen wäre mit einer verschachtelten for Schleife in etwa so

```
for (i = 2; i <= max; i++) {
            primzahl = true;

            for (j= 2; j<= zahl/2; j++) {
                if (i% j== 0) {
                    primzahl = false;
                    break;
                }
 
            }
 
            if (primzahl) {
                System.out.println(i+" ist eine Primzahl");
            }
        }
```
Informatinen von hier.


----------



## Robinson97 (24. Jun 2015)

In deinem Fall müsste die Methode also so aussehen:

```
static public void gibPrimzahlAus(int max) {
        maxNumber = max;
        boolean[] istPrimzahl = new boolean[maxNumber];
               
        for (int i = 2; i < maxNumber; i++) {          
// solange noch kein Teiler da ist, sind erst einmal alle Zahlen Primzahlen                istPrimzahl[i] = true;
     
                for (int j= 2; j<= i/2; j++) {
                    if (i% j== 0) {
                        istPrimzahl[i] = false;
                        break;
                    }else{
                         istPrimzahl[i] = true;
                    }
     
                }
     
            }
 
        for (int i = 2; i < maxNumber; i++) {
                if(istPrimzahl[i]){
                System.out.println("Primzahl: " + i);
            }
        }
 
        
    }
```


----------



## lilum (1. Jul 2015)

Vielen Dank!  @Robinson97


----------

