Obecnie mam ten główny generator, który jest ograniczony do n < 2^32-1. Nie jestem do końca pewien, w jaki sposób mógłbym zwiększyć limit, biorąc pod uwagę limit elementów w tablicy.Implementacja Java Sita Eratostenesa, która może przekroczyć n = 2^32?
Sito:
public class Main {
public static void main(String args[]){
long N = 2000000000;
// initially assume all integers are prime
boolean[] isPrime = new boolean[N + 1];
for (int i = 2; i <= N; i++) {
isPrime[i] = true;
}
// mark non-primes <= N using Sieve of Eratosthenes
for (int i = 2; i*i <= N; i++) {
// if i is prime, then mark multiples of i as nonprime
// suffices to consider mutiples i, i+1, ..., N/i
if (isPrime[i]) {
for (int j = i; i*j <= N; j++) {
isPrime[i*j] = false;
}
}
}
}
}
Jak mogę zmodyfikować to przejść obok n = 2^32-1?
Utwórz kolejną tablicę? :) – alfasin
@alfasin Czy jest lepszy sposób to zrobić? Jak programowo programować więcej, może w 2D Array? – Arman
Jaki jest przypadek użycia? Używałem sita wiele razy i nigdy tak naprawdę nie potrzebowałem rozmiaru> 10^7 – vish4071