2015-05-22 4 views
1

BigInteger в Java имеет конструктор, который генерирует простые числа, я не могу найти упоминания о том, какой алгоритм используется в этом. Есть ли название алгоритма или, может быть, книга, где описан этот алгоритм?Алгоритм генерации Java BigInteger

+0

Я смотрел в исходном коде, нет никакого упоминания источника алгоритма или имя либо – Akiles

+1

См http://stackoverflow.com/ вопросы/8744085/difference-between-biginteger-probableprime-and-other-primality-algorithm –

+0

Посмотрите на http://stackoverflow.com/questions/8744085/difference-between-biginteger-probableprime-and-other-primality- algorit HMS. – Linuslabo

ответ

0

Используемый алгоритм представляет собой деталь реализации, которая может варьироваться от jdk до jdk, даже между версиями. Контракт состоит только в том, что он дает вам простое число, а не то, что он следует за любым заданным алгоритмом.

1

Рекомендуется, чтобы метод probablePrime Предпочтительнее использовать для этого конструктора, если не является настоятельная необходимость определить определенность. - от Java 7 BigInteger API docs

Сказав это. Вероятные простые методы BigInteger используют алгоритмы Miller-Rabin и Lucas-Lehmer для проверки примитивности.

См. PassMillerRabin (раунды, случайные) & & проходитLucasLehmer(); в BigInteger internal method primeToCertainty from java 7.

Дальнейшее чтение на:

  1. Miller-Rabin primality test (Java)
  2. Lucas-Lehmer test