Sieb des Eratosthenes - Programmierfehler

huckleberry

Bekanntes Mitglied
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.

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
 

Ähnliche Java Themen

Neue Themen


Oben