Б. А. Кордемский Так или не так действовал Ферма? (о факторизации чисел) |
С именем знаменитого Пьера Ферма связано много тайн. Однажды он получил письмо с вопросом: «Является ли простым число 100895598169?» Ферма незамедлительно ответил, что это двенадцатизначное число является произведением двух простых чисел: 898423
Отыскание простых множителей натурального числа называют для краткости «факторизацией» («фактор», значит множитель, составная часть; в этом последнем смысле слово обычно и употребляется). Даже с такими помощниками, как электронные вычислительные машины, факторизация больших чисел чрезвычайно трудоёмкая задача, тем более трудно сделать это «ручным способом». Несколько первых простых чисел (2, 3, 5, 7,
Ясно также, что для всякого заданного числа N достаточно испытать в качестве возможных множителей простые числа, меньшие, чем √N . Действительно, если у числа N есть множитель
Как приём факторизации можно использовать известный алгоритм Евклида для отыскания наибольшего общего делителя (НОД) двух чисел. Состоит он, как вы, быть может, помните, в следующем: находим остаток r1 от деления большего числа на меньшее, затем находим остаток r2 от деления предшествующего делителя на r1, затем остаток r3 от деления r1 на r2
Для иллюстрации применим этот алгоритм к числам 104
Как же применить алгоритм Евклида к факторизации чисел?
Для выявления простых множителей числа N образуем другое число P произведение всех простых чисел от наименьшего из «подозреваемых» множителей числа N до наибольшего среди всех простых, меньших, чем √N . К этим числам N и P мы и применим алгоритм Евклида.
Пусть, например,
Образуем
Число 23 есть НОД чисел N и P и, следовательно, один из множителей числа 851. Деля 851 на 23, получаем 37 число простое.
Факторизация числа 851 окончена:
Для числа, предложенного Ферма, аналогичные вычисления длились бы значительно дольше. (Попробуйте!) Похоже, что сам Ферма считал иначе. Но как?
В одной из современных математических книг высказано предположение, что, по-видимому, «некоторые математики XVII века, потратившие много усилий на разработку теории чисел, владели незнакомыми нам способами узнавать простые числа». Но так как мастера-вычислители XVII века не раскрыли потомкам своих секретов факторизации чисел, то естественно, что способы, изобретённые позже, могли оказаться и переоткрытиями.
Ферма один из создателей теории чисел в своих вычислениях пользовался самыми разнообразными свойствами чисел. В частности, он, несомненно, знал, что всякое нечётное число N (равно как и всякое чётное, кратное 4) можно представить в виде разности квадратов двух целых чисел x и y:
N = a·b = | ( | a + b 2 |
) | 2 | | ( | a b 2 |
) | 2 | = x2 y2, |
где a и b
Если N простое число, то
Например, простое число 17 имеет только одно представление в виде разности квадратов, а именно
Так в «лаборатории факторизации чисел» появляется ещё один приём, который мы назовём «факторизацией по разности квадратов». При этом для подбора требующихся квадратных чисел x2 и y2 можно применить такую схему действий (алгоритм):
Если остаток сам является квадратным числом, то есть
Поясним этот алгоритм примером поиска множителей двух составных чисел:
Для числа N1:
Для числа
Вычисляем
272 N2 = 729 689 = 40; |
282 N2 = 784 689 = 95; |
292 N2 = 841 689 = 152; |
302 N2 = 900 689 = 211; |
. . . . . . . . . . |
332 N2 = 1089 689 = 400 = 202. |
Следовательно,
Успех достигнут только на седьмой попытке. Сравнивая множители числа 689, мы замечаем, что они сильно различаются по величине, что и вызвало удлинение нашей процедуры.
Начиная факторизацию какого-либо составного числа N, мы, разумеется, не знаем заранее, близки ли по величине его сомножители. Но если несколько последовательных шагов выполнения алгоритма не привели процесс подбора требующихся квадратных чисел к завершению, ответ определился: искомые множители не близки по величине к √N .
В таком случае применим хитрость: начнём всё снова, предварительно умножив заданное N, скажем на 3 (сохраняя тем самым нечётность). Это увеличит меньший из двух сомножителей числа N в 3 раза и сделает величины сомножителей числа 3N более близкими между собой, а, следовательно, и к √ 3N .
А если заранее предположить ещё более значительное различие между сомножителями числа N, то можно умножить его сразу на 5, 7 или 8 (в последнем случае образуется число чётное, но представимое разностью квадратов целых чисел). Умножение на 2 в любом случае было бы непригодным, а на 4 бесполезным. Докажите это самостоятельно.
Вернёмся к числу
Успех с одной попытки, а не с семи, как прежде.
Намереваясь применить теперь приём «факторизации по разности квадратов» к числу
Имеем
Далее:
Окончательно:
...Так ли всё происходило в «лаборатории» Ферма или как-нибудь иначе сведений нигде нет; но в любом случае наше совместное гипотетическое «путешествие» в прошлое с позиций настоящего, было, надеюсь, для читателя не бесполезным.