Hi Leute,
zwecks Studium beschäftige ich mich seit 2 Monaten mit Java.
Nun ist die Aufgabe gestellt worden das Sieb des Eratosthenes zu programmieren, um damit alle Primzahlen bis zu einer einzugebenden Grenze zu finden.
Außerdem soll man noch die eingegebene Zahl in ihre Primzahlen zerlegen
An sich war das mit ein bisschen denken und rumprobieren nicht das großartige Problem das Sieb zum laufen zu bringen.
Das Problem ist nur dass das Ding effizient sein muss und ich hab echt keine Idee wie ich mein Sieb effizienter machen soll.
Ich hoffe ihr könnt mir helfen und schonmal danke im Vorraus
Hier mein Code:
zwecks Studium beschäftige ich mich seit 2 Monaten mit Java.
Nun ist die Aufgabe gestellt worden das Sieb des Eratosthenes zu programmieren, um damit alle Primzahlen bis zu einer einzugebenden Grenze zu finden.
Außerdem soll man noch die eingegebene Zahl in ihre Primzahlen zerlegen
An sich war das mit ein bisschen denken und rumprobieren nicht das großartige Problem das Sieb zum laufen zu bringen.
Das Problem ist nur dass das Ding effizient sein muss und ich hab echt keine Idee wie ich mein Sieb effizienter machen soll.
Ich hoffe ihr könnt mir helfen und schonmal danke im Vorraus
Hier mein Code:
Java:
public class Bsp07{
public static void main(String[] args){
int n = SavitchIn.readLineInt(); //mit der klasse SavitchIn wird eingelesen
boolean[] liste = new boolean[n+1];
boolean[] zerlegung = new boolean[n];
int zeichenzaehler = 0;
int a = 1, c = 1, k = 2;
//liste markieren wenn nicht prim
while(a < liste.length){
if((a+1)%k == 0 && k < a+1){
liste[a] = false;
a++;
k = 2;
}
else{
if((a+1)%k == 0 && k >= a+1){
a++;
k = 2;
}
if((a+1)%k != 0 && k < a+1){
liste[a] = true;
k++;
}
}
}
//ausgabe aller primzahlen, maximal 5 pro zeile
liste[1] = true;
int b = 1;
while(b < n){
if(liste[b] == true) {
System.out.print((b+1)+" ");
zeichenzaehler++;
if(zeichenzaehler%5 == 0)
System.out.print("\n");
}
b++;
}
//Primfaktorzerlegung von n
int zaehler = 0;
System.out.print("\n"+n+" = ");
while(c < n){
if(liste[c] == false){
c++;
continue;
}
if((n%(c+1)) == 0){
if(zaehler != 0)
System.out.print(" * "+(c+1));
if(zaehler == 0){
System.out.print(c+1);
zaehler++;
}
n = n/(c+1);
}
else
c++;
}
System.out.print("\n");
}
}