As the BitSet.get()
function uses an int
as an argument, I was thinking whether I could store more than 2^32 bits in a BitSet
, and if so how would I retrieve them?
I am doing a Project Euler problem where I need to generate primes till 10^10. The algorithm I'm currently using to generate primes is the Erathonesus' Sieve, storing the boolean values as bits in a BitSet. Any workaround for this?
You could use a list of bitsets as
List<BitSet>
and when the end of one bitset has been reached you could move to the next one.However, I think your approach is probably incorrect. Even if you use a single bit for each number you need
10^10
bits which is about1 GB
memory (8 bits in a byte and 1024^3 bytes in a GB). Most Project Euler problems should be solvable without needing that much memory.