Hallo Forum,
ich habe hier einen ganz dummen Programmierfehler. Es ist das Sieb des Eratosthenes. Ich gebe eine Grenze n_grenze und möchte gerne die grösste Primzahl innerhalb dieser Grenze zurück haben.
Bei 227 gibt er mir als grösste Primzahl 226 zurück!?!?!
Der Algorithmus ist von dem Buch "Algorithmen in Java" Seite 101 ff. entnommen.
Danke für alle Hinweise!
Gruss Huck
ich habe hier einen ganz dummen Programmierfehler. Es ist das Sieb des Eratosthenes. Ich gebe eine Grenze n_grenze und möchte gerne die grösste Primzahl innerhalb dieser Grenze zurück haben.
Bei 227 gibt er mir als grösste Primzahl 226 zurück!?!?!
Der Algorithmus ist von dem Buch "Algorithmen in Java" Seite 101 ff. entnommen.
Java:
import java.util.ArrayList;
public class TestEnv2 {
public static ArrayList<Integer> siebEratosthenes(int n_grenze){
ArrayList<Integer> tt = new ArrayList<Integer>();
int n = n_grenze; // Grenze festlegen
boolean gestrichen[] = new boolean[n]; //Array mit n-Elementen erstellen
for(int i = 2; i < n; i++) gestrichen[i] = true; // init
for(int i = 2; i < n; i++){
if (gestrichen[i] == false){
for(int j = i; j*i < n; j++) gestrichen[i*j] = false;
}
}
for(int i = 2; i < n; i++) if(gestrichen[i] == true) tt.add(i);
return tt;
}
public static void main(String[] args) {
ArrayList<Integer> primes = siebEratosthenes(227);
System.out.println("227 is "+primes.get(primes.size()-1));
System.exit(0);
}
Danke für alle Hinweise!
Gruss Huck