Hi, habe ein Problem! Und zwar gibt er mir auch noch in der main die komplette Länge von prim wieder! Wie kann ich mittels meinem Quellcode es anstellen das nur maximal die Primzahlen ausgegeben werden? Muss ich dafür aus der Methode sieb 2 Werte übergeben?
Code:
public static void main(String args[])
{
int n;
System.out.println("====SiebDesErathostenes====\n");
do{
System.out.print("Obergrenze: ");
n=IO1.einint();
if(n<=0)
System.out.println("x>0!");
}while(n<=0);
int[] prim=sieb(n);
for(int i=0; i<prim.length; i++)
{
System.out.println(prim[i]);
}
}
static int[] sieb(int n)
{
boolean[] sieb = new boolean[n+1];
sieb[0] = false;
sieb[1] = false;
for (int i = 2; i <= n; i++)
sieb[i] = true;
int anz = 0;
for (int i=2; i*i<=n; i++)
{
if (sieb[i])
{
for (int j=2*i; j<=n; j+=i)
{
sieb[j] = false;
anz++;
}
}
}
int prim[] = new int[anz];
anz = 0;
for (int i=0; i<=n; i++)
{
if (sieb[i])
{
prim[anz] = i;
anz++;
}
}
return prim;
}