@kemek: Tak to wiem ale np. jak mam tablice "boolean[] numbersTable = new boolean[n];" to też mi wywala błąd pomimo tego że n zadeklarowałem jako BigInteger
@pulla: Jako wielkość tablicy można podać tylko int.
A wiesz, że samo założenie tablicy intów o wielkości takiej jaką może mieć maksymalny int wymaga około 8GB ramu?
Do tak wielu booleanów musisz skorzystać z klasy BitSet, dzięki której możesz włączać, wyłączać i pobierać poszczególne bity (booleany). Ale nadal ich pozycje są numerowane intami.
@kemek: Wiesz chodzi o to że miałem http://pastebin.com/5iNZB5Pz taki kod, który mi obliczał czynniki pierwsze podanej liczby, ale że chce uruchomić ten cały kod dla bardzo dużej liczby pytałem o te wszystkie metody związane z BigInteger, bo jestem dopiero początkujący jeśli chodzi jave.
@pulla: Nie wiem, jak wielka to liczba, ale już w longu Ci się zmieszczą takie liczby, dla których obliczanie tego algorytmu będzie za długie. ;)
Tylko znowu co z indeksowaniem tablic i BitSetu przez inty? :>
Możesz na podstawie istniejącego BitSetu napisać własny - indeksujący po longu - będziesz mógł tam zmieścić 2^31 (ograniczenie indeksowania po incie)*64 (liczba bitów w longu) bity, czyli 2^37, czyli 137,438,953,472 wartości logiczne, które zajmą
@pulla: Hmm, w sumie nie trzeba się ograniczać do "tylko" 2^37 wartości.
Można nawet korzystając z istniejącego BitSeta - stworzyć tablicę BitSetów. Jeśli szukamy liczby n (typu long) od 0 do (2^31)-1, to zaglądamy do BitSetu z indeksem 0 (w tablicy BitSetów) pod indeks n, jeśli od (2^31)-1 do 2x[(2^31)-1], to do BitSeta z indeksem 1 (w tablicy BitSetów) pod indeks n - (2^31)-1 i tak dalej.
cześć mam takie coś http://pastebin.com/sG66XEGs niestety wywala mi błąd że liczba jest za duża. Podpowie ktoś gdzie się pomyliłem?
@pulla:
Edit: Przecinek na końcu.
A wiesz, że samo założenie tablicy intów o wielkości takiej jaką może mieć maksymalny int wymaga około 8GB ramu?
Do tak wielu booleanów musisz skorzystać z klasy BitSet, dzięki której możesz włączać, wyłączać i pobierać poszczególne bity (booleany). Ale nadal ich pozycje są numerowane intami.
Tylko znowu co z indeksowaniem tablic i BitSetu przez inty? :>
Możesz na podstawie istniejącego BitSetu napisać własny - indeksujący po longu - będziesz mógł tam zmieścić 2^31 (ograniczenie indeksowania po incie)*64 (liczba bitów w longu) bity, czyli 2^37, czyli 137,438,953,472 wartości logiczne, które zajmą
Można nawet korzystając z istniejącego BitSeta - stworzyć tablicę BitSetów. Jeśli szukamy liczby n (typu long) od 0 do (2^31)-1, to zaglądamy do BitSetu z indeksem 0 (w tablicy BitSetów) pod indeks n, jeśli od (2^31)-1 do 2x[(2^31)-1], to do BitSeta z indeksem 1 (w tablicy BitSetów) pod indeks n - (2^31)-1 i tak dalej.
Co do granic