C или C ++: библиотеки для разложения целых чисел? - PullRequest
6 голосов
/ 24 мая 2009

Кажется, что существует несколько действительно быстрых простых алгоритмов факторизации (один из которых выглядит идеально - это квадратичное просеивание). Однако вместо того, чтобы делать свою собственную (вероятно, плохую) реализацию, я хотел бы использовать готовую библиотеку для простоты.

Мне нужно эффективно вычислять целые числа до 15 цифр. Из-за этого я не ищу алгоритм, который обязательно масштабируется асимптотически наилучшим образом, поскольку мы можем предположить, что вычисляемые числа меньше 10 15 .

Я уже посмотрел некоторые реализации, перечисленные на странице квадратичного сита Википедии . Тем не менее, некоторые из реализаций не кажутся хорошо поддерживаемыми; у некоторых нет документации; и так далее! Я проверил, есть ли в некоторых известных библиотеках, таких как Boost, методы факторизации, но они, похоже, не имеют.

Кто-нибудь может порекомендовать библиотеку, которая соответствует вышеуказанным критериям?

Ответы [ 2 ]

1 голос
/ 24 мая 2009

Проверьте MSIEVE библиотека для разложения больших целых чисел по Джейсону Пападопулосу.

Msieve - это результат моих усилий понять и оптимизировать целые числа вычисляются с использованием самых мощных современных алгоритмов.

Эта документация соответствует версии 1.46 библиотеки Msieve. Не ожидайте, что станете экспертом по факторингу, просто прочитав его. Я включены относительно полный список ссылок, которые вы можете и следует искать, если вы хотите обработать код больше, чем черный ящик решить ваши проблемы факторинга.

0 голосов
/ 24 мая 2009

Как насчет GMP-ECM ?

...