«Квант» — научно-популярный физико-математический журнал (издаётся с 1970 года)

Так или не так действовал Ферма?Кордемский Б. А. Так или не так действовал Ферма? : [о факторизации чисел] // Квант. — 1972. — № 7. — С. 11⁠—⁠13.

Изображения страниц

Текст статьи Кордемский Б. А. Так или не так действовал Ферма? : [о факторизации чисел] // Квант. — 1972. — № 7. — С. 11—13.

С именем знаменитого Пьера Ферма связано много тайн. Однажды он получил письмо с вопросом: «Является ли простым число 100895598169?». Ферма незамедлительно ответил, что это двенадцатизначное число является произведением двух простых чисел: 898423 и 112303.

Способ исследования числа он не раскрыл.

Отыскание простых множителей натурального числа называют для краткости «факторизацией» («фактор», значит — множитель, составная часть; в этом последнем смысле слово обычно и употребляется). Даже с такими помощниками, как электронные вычислительные машины, факторизация больших чисел — чрезвычайно трудоёмкая задача, тем более трудно сделать это «ручным способом». Несколько первых простых чисел (2, 3, 5, 7, 11, $\ldots$‍)‍ легко проверяются на их пригодность в качестве возможных множителей испытуемого числа — по известным признакам делимости на эти числа. Упрощает вычисления и знание признаков делимости на какие-либо из последующих простых чисел‍.

Ясно также, что для всякого заданного числа $N$‍‍ достаточно испытать в качестве возможных множителей простые числа, меньшие, чем $\sqrt N$‍.‍ Действительно, если у числа $N$‍‍ есть множитель $m\gt\sqrt N$‍,‍ то ему соответствует, как результат деления $N$‍‍ на $m$‍,‍ и некоторый множитель, меньший, чем $\sqrt N$‍.

Как приём факторизации можно использовать известный алгоритм Евклида для отыскания наибольшего общего делителя (НОД) двух чисел. Состоит он, как вы, быть может, помните, в следующем‍: находим остаток $r_1$‍‍ от деления большего числа на меньшее, затем находим остаток $r_2$‍‍ от деления предшествующего делителя на $r_1$‍,‍ затем остаток $r_3$‍‍ от деления $r_1$‍‍ на $r_2$‍‍ и т. д. Последний не равный нулю остаток (он непременно существует, поскольку числа $r_i$‍‍ убывают) и есть НОД заданных чисел (если он равен 1, то они взаимно просты).

Для примера применим этот алгоритм к числам 104 и 39: $$ \begin{aligned} 104:39&=2&&\text{(остаток 26)};\\ 39:26&=1&&\text{(остаток 13)};\\ 26:13&=2&&\text{(остаток 0).} \end{aligned} $$ Ответ: $\gcd(104,39)=13$‍.

Как же применить алгоритм Евклида к факторизации чисел?

Для выявления простых множителей числа $N$‍‍ образуем другое число $P$‍‍ — произведение всех простых чисел от наименьшего из «подозреваемых» множителей числа $N$‍‍ до наибольшего среди всех простых, меньших, чем $\sqrt N$‍.‍ К этим числам $N$‍‍ и $P$‍‍ мы и применим алгоритм Евклида.

Пусть, например, $N=851$‍.‍ Замечаем, что $\sqrt N\lt31$‍.‍ Устанавливаем по признакам делимости, что $N$‍‍ не делится на 3, 7, 11, 13. Кроме того, сразу видно, что 851 при делении на 17 даёт в остатке 1. Остаётся испытать делимость $N$‍‍ на 19, 23 и 29. Для такого небольшого числа, как 851, это легко сделать прямым делением на каждый из предполагаемых множителей. Но для уяснения метода поступим так, как было бы целесообразно действовать в случае большого числа.

Образуем $P=19\cdot23\cdot29=12673$‍.‍ Далее, $$ \begin{aligned} 12673:851&=14&&\text{(остаток 759)};\\ 851:759&=1&&\text{(остаток 92)};\\ 759:92&=8&&\text{(остаток 23)};\\ 92:23&=4&&\text{(остаток 0).} \end{aligned} $$

Число 23 есть НОД чисел $N$‍‍ и $P$‍‍ и, следовательно, один из множителей числа 851. Деля 851 на 23, получаем 37 — число простое.

Факторизация числа 851 окончена: $851=23\cdot37$‍.

Для числа, предложенного Ферма, аналогичные вычисления длились бы значительно дольше. (Попробуйте!) Похоже, что сам Ферма считал иначе. Но как?

На подступах к разгадке?

В одной из современных математических книг высказано предположение, что, по-видимому, «некоторые математики 17-го века, потратившие много усилий на разработку теории чисел, владели незнакомыми нам способами узнавать простые числа». Но так как мастера-вычислители 17-го века не раскрыли потомкам своих секретов факторизации чисел, то естественно, что способы, изобретённые позже, могли оказаться и переоткрытиями.

Ферма — один из создателей теории чисел — в своих вычислениях пользовался самыми разнообразными свойствами чисел. В частности, он, несомненно, знал, что всякое нечётное число $N$‍‍ (равно как и всякое чётное, кратное 4) можно представить в виде разности квадратов двух целых чисел $x$‍‍ и $y$‍:‍ $$ N=a\cdot b=\left(\dfrac{a+b}2\right)^2-\left(\dfrac{a-b}2\right)^2=x^2-y^2, $$ где $a$‍‍ и $b$‍($a\gt b$‍)‍ — какие-либо возможные нечётные сомножители нечётного числа $N$‍‍ (тогда $a+b$‍‍ и $a-b$‍‍ — чётные числа, а $x$‍‍ и $y$‍‍ — целые).

Если $N$‍‍ — простое число, то $a=N$‍,$b=1$‍,‍ разложение $x^2-y^2=(x+y)(x-y)$‍‍ единственно и не даёт иных сомножителей, кроме $N$‍‍ и 1. Если же $N$‍‍ — составное, то найдётся разложение $(x+y)(x-y)$‍,‍ которое даёт хотя бы одну пару множителей, отличных от $N$‍‍ и 1.

Например, простое число 17 имеет только одно представление в виде разности квадратов, а именно $17=9^2-8^2=17\cdot1$‍;‍ составное же число 203 имеет два таких представления: $$ 203=102^2-101^2=203\cdot1\quad\text{и}\quad203=18^2-11^2=29\cdot7. $$

Так в «лаборатории факторизации чисел» появляется ещё один приём, который мы назовём «факторизацией по разности квадратов». При этом для подбора требующихся квадратных чисел $x^2$‍‍ и $y^2$‍‍ можно применить такую схему. действий (алгоритм):

  1. найти наименьший превосходящий заданное число $N$‍‍ квадрат: $x^2$‍‍ (например, по таблице квадратов чисел или предварительно извлекая $\sqrt N$‍‍ с избытком);
  2. из найденного $x^2$‍‍ вычесть $N$‍.

Если остаток сам является квадратным числом, т. е. $x^2-B=y^2$‍,‍ то процесс подбора окончен; $N=x^2-y^2=(x+y)(x-y)$‍.‍ Если же остаток не есть квадрат, то надо повторить операцию вычитания $N$‍‍ из следующего по старшинству квадратного числа и так продолжать до получения квадратного остатка.

Поясним этот алгоритм примером поиска множителей двух составных чисел: $N_1=153583$‍‍ и $N_2=689$‍.

Для числа $N_1$‍:$\sqrt{153583}\approx392$‍;$392^2=153664$‍;$153664-153583=81=9^2$‍;‍ имеем $153583=392^2-9^2=401\cdot383$‍‍ — оба множителя — простые числа. Заметим, попутно, что оба они близки по величине один к другому и, следовательно, к $\sqrt N$‍.‍ В этом — причина краткости пути к успеху.

Для числа $N_2=689$‍‍ ближайший избыточный квадрат $729=27^2$‍.

Вычисляем: $$ \begin{aligned} 27^2-N_2&=729-689=40;\\ 28^2-N_2&=784-689=95;\\ 29^2-N_2&=841-689=152;\\ 30^2-N_2&=900-689=211;\\ .~.~.~.~.~.~.&~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.\\ 33^2-N_2&=1089-689=400=20^2. \end{aligned} $$

Следовательно, $689=33^2-20^2=53\cdot13$‍.

Успех достигнут только на седьмой попытке. Сравнивая множители числа 689, мы замечаем, что они сильно различаются по величине, что и вызвало удлинение нашей процедуры.

Возможная уловка

Начиная факторизацию какого-либо составного числа $N$‍,‍ мы, разумеется, не знаем заранее, близки ли по величине его сомножители. Но если несколько последовательных шагов выполнения алгоритма не привели процесс подбора требующихся квадратных чисел к завершению, — ответ определился: искомые множители не близки по величине к $\sqrt N$‍.

В таком случае применим хитрость: начнём всё снова, предварительно умножив заданное $N$‍,‍ скажем на 3 (сохраняя тем самым нечётность). Это увеличит меньший из двух сомножителей числа $N$‍‍ в 3 раза и сделает величины сомножителей числа $3N$‍‍ более близкими между собой, а, следовательно, и к $\sqrt{3N}$‍.

А если заранее предположить ещё более значительное различие между сомножителями числа $N$‍,‍ то можно умножить его сразу на 5, 7 или 8 (в последнем случае образуется число чётное, но представимое разностью квадратов целых чисел). Умножение на 2 в любом случае было бы непригодным, а на 4 — бесполезным. Докажите это самостоятельно.

Вернёмся к числу $N_2=689$‍‍ и применим в качестве «уловки» умножение на 5. Это даёт $5\cdot N_2=3445$‍;$\sqrt{3445}\approx59$‍;$59^2=3481$‍;$3481-3445=36=6^2$‍.‍ Имеем $3445=59^2-6^2=65\cdot53$‍;$5N_2=65\cdot53$‍;$N_2=53\cdot13$‍.

Успех с одной попытки, а не с семи, как прежде.

Может быть, так и действовал Ферма?

Намереваясь применить теперь приём «факторизации по разности квадратов» к числу $N=100895598169$‍,‍ дерзнём на введение дополнительного множителя. Пусть интуиция навела нас на множитель 8 (проба меньших множителей, предположим, нас не воодушевила).

Имеем $8N=807164785352$‍.‍ Ищем наименьшее число, квадрат которого больше, чем $8N$‍:‍ $$ \sqrt{807164785352}=898424~\text{(с избытком)}. $$

Далее: $898424^2-8N=898424$‍.

Хотя получившаяся разность и не является квадратом, продолжать применение алгоритма излишне: дерзость вознаграждена неожиданным сюрпризом — общим множителем 898424! Разложение числа $8N$‍‍ обеспечивается теперь простым вынесением общего множителя за скобки: $$ 8\cdot N=898424\cdot(898424-1)=8\cdot112303\cdot898423. $$

Окончательно: $N=112303\cdot898423$‍.

...Так ли всё происходило в «лаборатории» Ферма или как-нибудь иначе — сведений нигде нет; но в любом случае наше совместное гипотетическое «путешествие» в прошлое с позиций настоящего, было, надеюсь, для читателя не бесполезным.

Упражнения

  1. Найти НОД чисел $80\,887$‍‍ и $40\,091$‍.
  2. Доказать, что $N=55\,637$‍‍ имеет только один простой множитель, меньший, чем 30. (Воспользоваться числом $p=17\cdot19\cdot23\cdot29=215\,441$‍.)
  3. Найти все множители числа $N$‍‍ из задачи 2.
  4. Применить «факторизацию по разности квадратов» к разложению числа $131\,289$‍‍ на простые множители.
  5. Выполнить «факторизацию по разности квадратов» числа $500\,207$‍.‍ (Применить «уловку» предварительного умножения на 3.)
  6. Применяя «факторизацию по разности квадратов» непосредственно к числу $N=20\,099$‍,‍ убедитесь в том, что $20\,099=199\cdot101$‍.

    Сколько потребовалось шагов? Зная результат разложения $N$‍,‍ объясните, почему самым лучшим множителем, ускоряющим процесс разложения $N$‍,‍ оказалось бы число 8? Сколько потребуется шагов для разложения числа $8N$‍?


Метаданные Кордемский Б. А. Так или не так действовал Ферма? : [о факторизации чисел] // Квант. — 1972. — № 7. — С. 11—13.

Авторы
Заглавие
Так или не так действовал Ферма?
Год
1972
Номер
7
Страницы
11—13
Рубрика
Описание
Кордемский Б. А. Так или не так действовал Ферма? : [о факторизации чисел] // Квант. — 1972. — № 7. — С. 11⁠—⁠13.
Ссылка
https://www.kvant.digital/issues/1972/7/kordemskiy-tak_ili_ne_tak_deystvoval_ferma-87f020e9/
Полный текст
опубликован 13.08.2026