Общее числовое поле сито;разложение 200-значного числа - PullRequest
0 голосов
/ 12 февраля 2019

Я довольно новичок в программировании и не очень разбираюсь в спецификациях того, как все работает.Все, что мне нужно, это эффективный способ факторизации 200-значного числа.Я слышал, что сито с полями общего числа - лучший алгоритм для этого.Есть ли в Python код, который бы реализовал эту идею?Или есть другие альтернативы?Любая помощь будет оценена

1 Ответ

0 голосов
/ 12 февраля 2019

Что ты факторинг?Общие 200-значные числа?В этом случае используйте http://pari.math.u -bordeaux.fr / dochtml / gpman.html или какой-нибудь Python-интерфейс к нему.(Есть несколько, я знаю, что http://www.sagemath.org/ может сделать это, а https://pypi.org/project/cypari/ дает вам интерфейс без остального.)

Они обычно будут быстрыми, потому что они используют различныеподходов, которые могут найти факторы.Пробное деление на очень малые факторы, Рабина-Миллера для проверки на первичность, эллиптические кривые для относительно небольших факторов и т. Д.

С другой стороны, если вы ищете фактор 200Цифровые числа, которые появляются в криптографии, у вас есть больше работы.Они сознательно делают свои числа неспособными учесть любые быстрые вещи, которые вы можете попробовать.Как указывает https://en.wikinews.org/wiki/Two_hundred_digit_number_factored, для этого буквально требуются годы процессорного времени, поэтому вы должны использовать высокооптимизированные реализации (т.е. не написанные на Python) и распределять большую часть работы по нескольким машинам.

Дляна самом деле выполнить такую ​​факторизацию, я бы посоветовал начать с https://en.wikipedia.org/wiki/General_number_field_sieve#Implementations и перейти оттуда.

Если ваша цель - понять, как работает факторизация, вы пройдете длинный путь черезкуча литературы по теории чисел.Я бы порекомендовал сначала попробовать изучить квадратичное сито, потому что оно связано и намного проще.(Следовательно, это более короткий путь для понимания, и он будет мотивировать вас, когда вы решите более сложный.) Это сито не так хорошо, как сито общей теории чисел для 200-значных чисел, но оно лучше для 100-значных, так что этовсе еще довольно круто.

...