Введение

В теории чисел метод факторизации Диксона (также метод случайных квадратов Диксона или алгоритм Диксона) — алгоритм факторизации целых чисел общего назначения; он является прототипическим методом с использованием фактор-базы. В отличие от других методов с использованием фактор-базы, оценка времени его работы подкреплена строгим доказательством, не основанным на предположениях о свойствах гладкости значений, принимаемых полиномом. Алгоритм был разработан Джоном Д. Диксоном, математиком из Карлтонского университета, и опубликован в 1981 году.

Основная идея

Метод Диксона основан на поиске конгруэнтности квадратов по модулю целого числа N, которое требуется разложить на множители. Метод факторизации Ферма находит такую конгруэнтность, выбирая случайные или псевдослучайные значения x и надеясь, что целое число x² mod N является полным квадратом (в целых числах). Например, если (начиная с 292, первого числа больше √N и увеличивая счет), то 505² mod 84923 равно 256, что является квадратом 16. Следовательно, вычисление наибольшего общего делителя (НОД) между 505 – 16 и N с помощью алгоритма Евклида дает 163, который является делителем N.

На практике, выбор случайных значений x потребует непрактично большого времени для нахождения конгруэнтности квадратов, поскольку существует только √N полных квадратов меньше N.

Метод Диксона заменяет условие "является квадратом целого числа" на гораздо более слабое условие: "имеет только малые простые множители". Например, существует 292 полных квадрата меньше 84923; 662 числа меньше 84923, чьи простые множители – только 2, 3, 5 или 7; и 4767 чисел, чьи простые множители все меньше 30. (Такие числа называются B-гладкими относительно некоторой границы B). Если существует много чисел, квадраты которых можно разложить на множители, состоящие из фиксированного набора малых простых чисел, то линейная алгебра по модулю 2 над матрицей позволит найти подмножество чисел, квадраты которых в произведении дадут произведение малых простых чисел в четной степени – то есть, подмножество чисел, квадраты которых при умножении дадут квадрат (желательно другого) числа по модулю N.