Uploaded by _ Nika _

факторизация

advertisement
Факториза́цией натурального числа называется его разложение в произведение простых множителей. Существование и единственность (с точностью до порядка
следования множителей) такого разложения следует из основной теоремы арифметики.
В отличие от задачи распознавания простоты числа, факторизация предположительно является вычислительно сложной задачей. В настоящее время неизвестно,
существует ли эффективный не квантовый алгоритм факторизации целых чисел. Однако доказательства того, что не существует решения этой задачи за
полиномиальное время, также нет.
Предположение о том, что для больших чисел задача факторизации является вычислительно сложной, лежит в основе широко используемых алгоритмов
(например, RSA). Многие области математики и информатики находят применение в решении этой задачи. Среди них: эллиптические кривые, алгебраическая теория
чисел и квантовые вычисления.
Задача поиска эффективных способов разложения целых чисел на множители интересовала математиков с давних времён, особенно специалистов в области теории
чисел. Существуют предположения о том, что Ферма был одним из первых, кто предложил метод разложения, заключающийся в том, чтобы представить число в виде
разности квадратов
, а затем, вычисляя
, попытаться найти нетривиальный делитель
величине делителя числа быстрее, чем простой перебор делителей[1].
. Данный способ позволяет находить два мало различающихся по
Создание алгоритма RSA стимулировало бурные исследования в области факторизации целых чисел.
Далее Лежандр обнаружил, что при таком подходе достаточно получить сравнение
предложены некоторые способы нахождения чисел, связанных этим сравнением[1].
, и использовал для этого цепные дроби. Также Эйлером и Гауссом были
Одним из ключевых моментов в развитии факторизации целых чисел было создание алгоритма RSA, что возобновило интерес учёных в данном направлении, так как
имело практическое применение в области шифрования. Этот алгоритм был предложен в 1977 году тремя учёными Рональдом Ривестом, Ади Шамиром и Леонардом
Адлеманом из Массачусетского технологического института и назван по первым буквам фамилий авторов методом RSA. Он основан на идее криптографии с открытым
ключом и для взлома системы необходимо выполнить разложение числа на простые сомножители. На момент публикации алгоритма RSA были известны методы,
которые позволяли факторизовать числа, состоящие не более чем из 25—30 цифр, а наиболее известным и применяемым все ещё оставался метод Ферма. Метод
RSA позволяет факторизовать числа[уточнить] из 100 и более десятичных знаков. Создатели, в свою очередь, пообещали за факторизацию числа из 129 десятичных
знаков символические сто долларов США[2].
На популярность задачи факторизации также повлияла публикация в 1977 году в журнале Scientific American Мартина Гарднера «Новый алгоритм шифрования, для
взлома которого потребуются миллионы лет».[3] Столь громкое название было воспринято в качестве вызова всему математическому сообществу. В результате этой
гонки было предложено несколько новых и нестандартных идей факторизации[2].
Эпопея с разложением 129-значного числа завершилась в 1994 году, когда коллектив под руководством А. Ленстры, используя 1600 компьютеров, подготовил за 220
дней систему линейных уравнений, содержавшую более полумиллиона неизвестных. Решение этой системы суперкомпьютером заняло два дня. Несмотря на то, что в
то время уже были известны методы решета числового поля, данный результат был получен с помощью алгоритма квадратичного решета[2].
Алгоритмы факторизации
Как правило, на вход таких алгоритмов подаётся число
, которое необходимо факторизовать, состоящее из
символов (если
представлено в двоичном
виде)[4]. При этом алгоритм ищет первый простой делитель, после чего, при необходимости, можно запустить алгоритм заново для дальнейшей факторизации. Также,
прежде чем начинать факторизацию большого числа, следует убедиться в том, что оно не простое. Для этого достаточно пройти тест числа на простоту. Эта
задача детерминированно разрешима за полиномиальное время[5].
В зависимости от сложности алгоритмы факторизации можно разбить на две группы. Первая группа — экспоненциальные алгоритмы, сложность которых
экспоненциально зависит от длины входящих параметров (то есть от длины
группа — субэкспоненциальные алгоритмы.
самого числа в бинарном представлении). Вторая
Вопрос о существовании алгоритма факторизации с полиномиальной сложностью на классическом компьютере является одной из важных открытых проблем
современной теории чисел. В то же время факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора (класс BQP)[6].
Алгоритмы факторизации[править | править код]
Как правило, на вход таких алгоритмов подаётся число
, которое необходимо факторизовать, состоящее из
символов (если
представлено в двоичном виде)[4].
При этом алгоритм ищет первый простой делитель, после чего, при необходимости, можно запустить алгоритм заново для дальнейшей факторизации. Также, прежде чем
начинать факторизацию большого числа, следует убедиться в том, что оно не простое. Для этого достаточно пройти тест числа на простоту. Эта
задача детерминированно разрешима за полиномиальное время[5].
В зависимости от сложности алгоритмы факторизации можно разбить на две группы. Первая группа — экспоненциальные алгоритмы, сложность которых экспоненциально
зависит от длины входящих параметров (то есть от длины
самого числа в бинарном представлении). Вторая группа — субэкспоненциальные алгоритмы.
Вопрос о существовании алгоритма факторизации с полиномиальной сложностью на классическом компьютере является одной из важных открытых проблем
современной теории чисел. В то же время факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора (класс BQP)[6].
Алгоритмы факторизации[править | править код]
Как правило, на вход таких алгоритмов подаётся число
, которое необходимо факторизовать, состоящее из
символов (если
представлено в двоичном
виде)[4]. При этом алгоритм ищет первый простой делитель, после чего, при необходимости, можно запустить алгоритм заново для дальнейшей факторизации. Также,
прежде чем начинать факторизацию большого числа, следует убедиться в том, что оно не простое. Для этого достаточно пройти тест числа на простоту. Эта
задача детерминированно разрешима за полиномиальное время[5].
В зависимости от сложности алгоритмы факторизации можно разбить на две группы. Первая группа — экспоненциальные алгоритмы, сложность которых
экспоненциально зависит от длины входящих параметров (то есть от длины
группа — субэкспоненциальные алгоритмы.
самого числа в бинарном представлении). Вторая
Вопрос о существовании алгоритма факторизации с полиномиальной сложностью на классическом компьютере является одной из важных открытых проблем
современной теории чисел. В то же время факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора (класс BQP)[6].
1пр
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
2пр
1762: Выплавка железа: Джэйрд Элиот
1767: Прядильная машина: Джеймс Харгривз
1769: Паровой двигатель: Уатт, Джеймс
1771 году в Кромфорде, Дербишир, начала работать прядильная фабрика Аркрайта, который поощрял изобретательство, и его машины были
усовершенствованы, теперь они приводились в движение водяным колесом.
В 1778 году внук Дарби, Абрахам Дарби III, из своего литья построил в Шропшире знаменитый Железный мост, первый мост в Европе, полностью состоящий
из металлических конструкций.
в 1784 году Генри Корт разработал процесс пудлингования.
В 1785 году Эдмунд Картрайт получил патент на механический ткацкий станок с ножным приводом, который в 40 раз увеличил производительность труда.
Первый паровоз был построен в 1804 году Ричардом Тревитиком.
К 1812 году во Франции работало 11000 жаккардовых ткацких станков.
С 1826 по 1846 год экспорт железа и чугуна из Великобритании увеличился в 7,5 раза[19]
Первый электрический телеграф создал российский учёный Павел Львович Шиллинг в 1832 году.
Download