Attualmente questo generatore principale è limitato a n. < 2^32-1. Non sono completamente sicuro di come espandere ulteriormente il limite, dato il limite di elementi in un array.Implementazione Java di Sieve di Eratostene che può andare oltre n = 2^32?
Sieve:
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;
}
}
}
}
}
Come potrei modificare questo di dribblare n = 2^32-1?
Creare un altro array? :) – alfasin
@alfasin C'è un modo migliore per farlo? Come creare più spazio a livello di programmazione, magari in un array 2D? – Arman
Qual è il caso d'uso? Ho usato setaccio un sacco di volte e non ho mai avuto davvero bisogno di una dimensione> 10^7 – vish4071