Почему это простое сито работает чуть меньше, чем Integer.MAX_VALUE? - PullRequest
0 голосов
/ 03 июня 2019

Я нашел этот код здесь в StackOverflow:

public static BitSet computePrimes(int limit) {
    final BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 0; i * i < limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j < limit; j += i) {
                primes.clear(j);
            }
        }
    }
    return primes;
}

но я изо всех сил пытаюсь понять, как заставить его работать выше Integer.MAX_VALUE.

Я знаю, что должен использовать long, но что мне нужно изменить (в циклах) в этом методе, чтобы получить простые числа от Integer.MAX_VALUE до 3037000499L, или это вообще возможно?

...