Sieb des Eratosthenes

Status
Nicht offen für weitere Antworten.

Hunz-Kunz

Mitglied
Hi @ all,
also als erstes muss ich euch mal sagen, das ich euer Forum total super find! :toll:
Hab vor kurzem erst mit Java angefangen und hab im mom ein kleines Problem mit nem kleinen Programm, dass ich schreiben wollte. Das Programm soll alle Primzahlen bis zu einer bestimmten Zahl ausgeben. Das klappt auch im großen und ganzen, allerdings sind immer noch Zahlen dabei, die keine Primzahlen sind und ich weis einfach nicht wieso ! :(
Hier ist mal mein momentanes Programm:

Code:
	public static int[] Prim(int[] f, int x)
	{
		f[0]=0; 
		
		for (int a=0; f[a]*f[a]<=x; a++) 
			{
			if (f[a]!=0) 
				{
				for (int b=a+a; b<x; b=b+a) 
					{
					if ((f[b])%(f[a])==0) 
						{
						f[b]=0; 
						}
					}
				}
			}
		return f;
		}

Hier ist meine TestMain:
Code:
		System.out.print("Primzahlen anzeigen von 0 bis: ");
		int x=read();
		int[] sieb=new int[x]; 
		for (int i=0; i<x; i++) 
			{
			sieb[i]=i+1;
			}
		sieb=Prim(sieb,x); 
		for (int i=0; i<x; i++) 
			{
			if (sieb[i]!=0)
				{
				System.out.print("\n"+sieb[i]);
				}
			}
fänd es total Klasse wenn jemand wüsste an was es hängt.

Liebe Grüße
Hunz-Kunz
 
S

SlaterB

Gast
deine Bedingung
if ((f)%(f[a])==0)
verstehe ich nicht, die ist unnötig,
dann noch bisschen am Array arbeiten und paar Kleinigkeiten,
für mich auch noch die Eingabe herausgenommen,
schon hast du

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        int x = 37;
        System.out.println("Primzahlen anzeigen von 0 bis " + x);
        int[] sieb = new int[x];
        for (int i = 0; i < x; i++)
        {
            sieb[i] = i;
        }
        sieb = Prim(sieb, x);
        for (int i = 0; i < x; i++)
        {
            if (sieb[i] != 0)
            {
                System.out.print("\n" + sieb[i]);
            }
        }
    }

    public static int[] Prim(int[] f, int x)
    {
        f[0] = 0;
        for (int a = 2; a * a <= x; a++)
        {
            System.out.println("a: " + a + ", " + f[a]);
            if (f[a] != 0)
            {
                for (int b = a * a; b < x; b = b + a)
                {
                    System.out.println("b: " + b + ", " + f[b]);
                    f[b] = 0;
                }
            }
        }
        return f;
    }
}
 

Hunz-Kunz

Mitglied
hey,
vielen Dank für deine schnelle Hilfe, immer diese blöden Kleinigkeiten auf die man nicht kommt!

Vielen Danke
:toll:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben