Как представить целые числа больше как (10 ^ 6)!использовать в уравнениях для решения в Java - PullRequest
0 голосов
/ 01 января 2012

Как мы можем решить уравнения, имеющие N!константы в нем, где N может иметь диапазон 1 <= N <= 10 ^ 6 BigInteger может выполнять только до 128 бит, верно?</p>

Даже если сделать логарифм с обеих сторон, он оставляет значения больше, чем BigInteger.

Ответы [ 3 ]

7 голосов
/ 01 января 2012

Нет, BigInteger может обрабатывать произвольные размеры целых чисел (ограничено памятью). Из документации :

Неизменный произвольная точность целые числа.

(Акцент мой.)

Это не значит, что BigInteger обязательно будет правильным ответом на ваши требования, но перед принятием решения стоит знать о его реальных возможностях.

1 голос
/ 01 января 2012

Реализация BigInteger ограничена 2 ^ 2,1 млрд бит или около 256 МБ. Принимая во внимание то, что используется int для длины в битах, это вряд ли увеличится.

1 голос
/ 01 января 2012

Даже если сделать логарифм с обеих сторон, он оставляет значения больше, чем BigInteger.

пусть N = 10 ^ 6

log(N!) ~ NlogN - N [Stirling's approximation]

        ~ 13e6

это может (легко) вписаться в int

...