Description

Get these prime numbers in the range from 0 to N.

Code

public static List<Integer> primes(int N){
    boolean[] isPrime = new boolean[N];
    for(int i = 0; i < N; i += 2){
        isPrime[i] = false;
    }
    for(int i = 1; i < N; i += 2){
        isPrime[i] = true;
    }
    isPrime[2] = true;
    for(int i = 3; i < N; i += 2){
        if(isPrime[i]){
            int delta = 2*i;
            int cur = i + delta;
            while(cur < N){
                isPrime[cur] = false;
                cur += delta;
            }
        }
    }
    List<Integer> ans = new ArrayList<>();
    for(int i = 2; i < N; i ++){
        if(isPrime[i]) {
            System.out.println(i);
            ans.add(i);
        }
    }
    return ans;
}