Текст
                    С. Коутинхо
ВВЕДЕНИЕ
В ТЕОРИЮ ЧИСЕЛ
АЛГОРИТМ RSA
Перевод с английского С. А. Кулешова
под редакцией С. К. Ландо
ПОСТМАРКЕТ


С.Ко)тинхо. Введение в теорию чисел. Алгоритм RSA. Москва: Постчаркет, 2001. - 328 с. Криптография! Многие еще с детства заинтригованы этим процессом. Кто не помиит «пляшущих человечков» Конан Дойля? Но реальная схема шифрования и проще, и сложнее, чем об этом написано в знаменитом рассказе классика. Увилев в названии математическую теорию, некоторые из вас сочтут кннг> скучной и неинтересной. Ошибаетесь! Пособие написано живо, ин- интересно и очень доступно. Для понимания сути достаточно знаний сред- средней школы. Но несмотря на простой стиль изложения, все утверждения снабжены строгими доказательствами или ссылками на литературу. Kpv г читателей очень широк: от школьников, интересующихся теорией чисел или шифрованием, до банковских и корпоративных программистов, желающих глубже вникнуть в основы своей деятельности. The Mathematics of Ciphers Number Theoiy and RSA Cryptography S. С Coutinho ISBN 5-901095-09-X © 1999 AK Peters, Ltd. ALL RIGHTS RESERVED © 2001, перевод на русский язык «ЗАО Предприятие Постмаркет»
Содержание Предисловие 7 Предисловие автора 10 Глава 1. Введение 14 §1.1. Криптография 14 § 1.2. Система шифрования RSA 18 § 1.3. Системы символьных вычислений 21 § 1.4. Греки и целые числа 25 § 1.5. Ферма, Эйлер и Гаусс 27 § 1.6. Проблемы теории чисел 30 § 1.7. Теоремы и доказательства 33 Глава 2. Фундаментальные алгоритмы 39 §2.1. Алгоритмы 39 § 2.2. Алгоритм деления 43 § 2.3. Теорема деления 45 § 2.4. Алгоритм Эвклида 47 § 2.5. Доказательство корректности алгоритма Эвклида 51 § 2.6. Расширенный алгоритм Эвклида 54 Упражнения 58 Глава 3. Разложение на множители 62 §3.1. Теорема о разложении 62 § 3.2. Существование разложения 64 §3.3. Эффективность алгоритма деления методом проб 68
Содержание § 3.4. Алгоритм Ферма разложения на множители . 69 § 3.5. Доказательство корректности алгоритма Ферма 71 §3.6. Одно фундаментальное свойство простых чисел 74 § 3.7. Греки и иррациональности 76 § 3.8. Единственность разложения 79 Упражнения 83 Глава 4. Простые числа 88 §4.1. Полиномиальная формула 88 §4.2. Экспоненциальные формулы: числа Мерсенна 92 §4.3. Экспоненциальные формулы: числа Ферма . 95 § 4.4. Праймориальная формула 96 § 4.5. Бесконечность множества простых чисел . . 98 § 4.6. Решето Эратосфена 105 Упражнения НО Глава 5. Арифметика остатков 115 §5.1. Отношение эквивалентности 116 §5.2. Сравнения 121 § 5.3. Арифметика остатков 125 § 5.4. Критерий делимости 129 §5.5. Степени 132 § 5.6. Диофантовы уравнения 133 §5.7. Деление по модулю п 135 Упражнения 139 Глава 6. Индукция и Ферма 143 §6.1. Ханой! Ханой! 143 § 6.2. Математическая индукция 150 § 6.3. Теорема Ферма 155 § 6.4. Вычисление корней 159 Упражнения 165 Глава 7. Псевдопростые числа 171 §7.1. Псевдопростые числа 171 § 7.2. Числа Кармайкла 175
Содержание § 7.3. Тест Миллера 180 § 7.4. Тестирование простоты и системы сим- символьных вычислений 185 Упражнения 188 Глава 8. Системы сравнений 192 §8.1. Линейные уравнения 192 § 8.2. Астрономический пример 194 §8.3. Китайский алгоритм остатков: взаимно простые модули 197 § 8.4. Китайский алгоритм остатков: общий случай 202 § 8.5. Снова степени 204 § 8.6. Посвящение в тайну 206 Упражнения 210 Глава 9. Группы 213 §9.1. Определения и примеры 213 § 9.2. Симметрии 216 §9.3. Интерлюдия 222 § 9.4. Арифметические группы 227 §9.5. Подгруппы 232 § 9.6. Циклические подгруппы 234 § 9.7. В поисках подгрупп 237 § 9.8. Теорема Лагранжа 239 Упражнения 242 Глава 10. Мерсенн и Ферма 247 §10.1. Числа Мерсенна 247 §10.2. Числа Ферма 251 § 10.3. И снова Ферма 254 § 10.4. Тест Люка — Лемера 256 Упражнения 261 Глава 11. Тесты на простоту и примитивные корни 264 §11.1. Тест Люка 264 §11.2. Еще один тест на простоту 269 § 11.3. Числа Кармайкла 272
Содержание §11.4. Предварительные замечания 273 § 11.5. Примитивные корни 276 §11.6. Вычисление порядков 278 Упражнения 280 Глава 12. Система шифрования RSA 284 § 12.1. О начале и конце 284 § 12.2. Шифровка и дешифровка 286 § 12.3. Почему она работает? 289 § 12.4. Почему система надежна? 292 § 12.5. Выбор простых 293 § 12.6. Проблема подписи 297 Упражнения 299 Кода 303 Приложение. Корни и степени 309 §П.1. Квадратные корни 309 §П.2. Алгоритм степеней 312 Литература 314 Дополнительная литература 319 Предметный указатель 321
«... всякая опытность и наблюде- наблюдение человека, страстно к чему- нибудь привязанного, могут быть полезны для людей, разделяющих его любовь к тому же предмету.» С. Т. Аксаков «Записки об ужении рыбьи Предисловие Эта книга в первую очередь — книга по теории чисел, по науке, которую древние называли «царицей математики». И действительно, вряд ли в какой-нибудь другой части матема- математики встретится такое количество столь простых и изящных по формулировке, и столь трудных для решения задач, на- настолько оторванных от практических надобностей человека. Мало какая область математики может похвастаться столь древней и славной историей. Сегодняшняя же теория чисел, называемая зачастую математиками попросту «арифметикой», вдобавок, еще и очень сложна по своим методам, почерпну- почерпнутым из почти всех прочих математических наук. Предыдущий абзац относится ко всем без исключения кни- книгам по теории чисел. В чем же особенность книги, предлага- предлагаемой сейчас читателю? Пожалуй, в том, что ни что из ска- сказанного выше для нее неверно. Во-первых, во второй половине двадцатого века у теории чисел неожиданно появились при- приложения к вещам вполне практическим. Сегодня компьютер, телефон, кредитная карточка и многие другие устройства ис- используют довольно тонкие результаты этой науки. Как пели
8 Предисловие по радио в моем детстве: «Чтоб водить корабли или летчиком стать, надо прежде всего арифметику знать». Яркий пример подобного приложения — криптосистема с открытым ключей, подробно разбираемая в этой книге. Идея такой криптосисте- криптосистемы проста чрезвычайно: перемножить два больших целых чи- числа очень легко, а вот найти сомножители, зная произведе- произведение — довольно трудно. Вторая особенность этой книги — ее простота. Книга на- написана автором для студентов первого курса, что в переводе на русский язык означает, что она вполне доступна интере- интересующемуся школьнику 9, 10, 11 класса. Никаких, или почти никаких, предварительных знаний ее чтение не потребует. Прочтя ее, Вы узнаете многие интересные факты из тео- теории чисел и из ее истории, поймете, на чем основаны ее при- приложения к криптографии. Если же Вы не сочтете за труд про- прорешать предлагаемые в ней задачи, то после этого Вы будете готовы читать и более сложные книги. А главное, Вы почув- почувствуете красоту теории чисел, про которую Эсхил говорил: «наука чисел, из наук важнейшая». М.А.Цфасман
Лндрэа и Даниэлю И желание мое — чтобы читатель заметил, что я сделал себе развлечение из писания; а чтобы чте- чтение не было для него нудным и скучным занятием, я сдобрил повествование — не скабрезностями, но шутками невинными и беспечными; и если ты — человек строгий и нрава мрачного, то судить о них не смей, ибо, как говорят мудрые, бывают оскор- оскорбления нанесенные и такие, которые, не будучи на- нанесенными, принимаются на свой счет. Айзек Уолтон1, «Совершенный рыболов». 'izaak Walton A593-1683), английский писатель. Книга «The Compleat Angler» вышла в Лондоне в 1653 году.
Предисловие автора Эта книга приглашает Вас в путешествие, конечная цель которого — (RSA), знаменитая система шифрования с откры- открытым ключом Ривеста, Шамира и Адлемана (Rivest, Shamir, Adleman). Путешествие будет неспешным, с большим количе- количеством остановок, на которых можно полюбоваться окружаю- окружающим пейзажем и познакомиться с историческими достоприме- достопримечательностями . На самом деле, книга посвящена скорее математическим вопросам, чем криптографии. Хотя мы и изучим подробно работу системы шифрования RSA, детали ее реализации оста- останутся в стороне. Вместо этого мы сосредоточимся на возни- возникающих в связи с ней математических проблемах — разло- разложение числа на простые множители и определение, является ли число составным или простым. Эти вопросы принадлежат к числу старейших в области, известной под именем теории чисел, которая с античных времен служит источником мно- множества интригующих задач. В этой области работали такие математики, как Эвклид (Euclid), Ферма (Ferraat), Эйлер (Еи- ler), Лагранж (Lagrange), Лежандр (Legendre), Гаусс (Gauss), Риман (Riemann), а также, во времена не столь отдаленные, А. Вейль (Weil), Делинь (Deligne) и Уайлс (Wiles). Предлагаемый в этой книге подход к теории чисел отлича- отличается от классического подхода старых монографий в некото- некоторых важных аспектах. Мы всюду подчеркиваем алгоритмиче-
Предисловие автора 11 скую сторону дела, не забывая строго обосновать все встреча- встречающиеся на нашем пути алгоритмы. Разумеется, со времен Эв- Эвклида теория чисел была пронизана алгоритмами, однако до самого последнего времени этот подход казался несколько ста- старомодным. Мы относимся к нему очень серьезно. Так, дока- доказательству Эвклида бесконечности множества простых чисел предшествует обсуждение формулы праймориала, а существо- существование примитивных корней по модулю простого числа дока- доказывается с помощью алгоритма Гаусса, который тот изобрел для вычисления корней. Таким образом, в действительности эта книга об алгорит- алгоритмической теории чисел и ее применениях к системе шифрова- шифрования RSA. Но хотя цель и обозначена очень четко, изложение ни в коем случае не зациклено на ней. На самом деле, мы не всегда следуем кратчайшим путем, предпочитая тот, который спосо- способен пролить больше света на интересующий нас вопрос. Этим объясняется обращение к понятию группы, с помощью кото- которого различные методы разложения числа на простые мно- множители получают в главах 10 и 11 единое толкование. Наше отклонение в теорию групп заводит аж до теоремы Лагранжа и содержит обсуждение групп симметрии. В основу книги легли записки лекций, предназначенных для программистов-первокурсников. Некоторые ее особенно- особенности объясняются слабой подготовкой студентов. Так, она пред- предполагает у читателя лишь незначительные предварительные математические познания. Практически не используется ни- ничего, кроме формулы для суммы геометрической прогрессии и биномиального разложения. Кроме того, хотя предметом книги и являются алгоритмы, никакого предварительного зна- знакомства с программированием не требуется. Можно ожидать, однако (благодаря самому выбору предмета), что процент ком- компьютерно грамотных читателей окажется значительным. По- Поэтому в конце каждой главы приведены (необязательные) уп- упражнения, иллюстрирующие описанные в тексте алгоритмы.
12 Предисловие автора Цель многих из них состоит в получении числовых данных для проверки известных формул или гипотез в теории чисел. Их можно отнести к тому, что некоторые называют компью- компьютерным экспериментом. Скажем несколько слов о стиле. Иногда математические книги представляют собой сухую последовательность опреде- определений, теорем и доказательств. Такой стиль восходит к «Эле- «Элементам» Эвклида, и в конце двадцатого века он приобрел силу стандарта. Не будем забывать, однако, что этот монументаль- монументальный стиль не был доминирующим даже среди греческих мате- математиков. Архимед (Archimedes), к примеру, рассказывал чита- читателям о возникавших на его пути трудностях и тупиках, куда ему случалось забредать, и даже предупреждал их об утвер- утверждениях, которыми он пользовался и которые впоследствии оказывались ложными. В этой книге я следую скорее приме- примеру Архимеда, нежели Эвклида, и сделанный мною выбор за- заметно влияет на способ изложения. Во-первых, исторические комментарии вживлены в текст, а не выделены в отдельные примечания, а их предметом может служить все, что угодно: от истоков теории групп до анекдотов. Во-вторых, алгорит- алгоритмы записаны на обычном языке, и я не стремлюсь к их опти- оптимизации — если только она не работает на понимание. Пять лет преподавания излагаемого материала убедили меня в том, что программирование предложенных алгоритмов не вызыва- вызывает сколь-нибудь заметных трудностей у всякого, имеющего необходимую подготовку. Следует отметить еще одну особенность книги: у каждой важной теоремы и у всякого важного алгоритма есть свое имя. В большинстве своем это классические имена, которые исполь- используются в этом качестве уже десяти- или столетиями. Другие изобретены мной. По некоторым из них, как, скажем, теорема о примитивном корне, формулировка результата немедленно восстанавливается всяким, знакомым с предметом изложения; для других сделать это труднее. Чтобы облегчить поиск, я
Предисловие автора 13 выделил названия основных теорем и алгоритмов в отдель- отдельный указатель, снабдив их дополнительно кратким описани- описанием2. Ссылка на безымянные результаты идет по номерам глав и разделов, в которых они содержатся. Этот труд представляет собой переработанный вариант книги, опубликованной впервые на португальском языке в 1997 году, и в ее основе лежат лекции, прочитанные студентам- первокурсникам факультета программирования Федерально- Федерального университета Рио де Жанейро. Я обязан студентам, слу- слушавшим этот курс в течение последних пяти лет, больше, чем я способен выразить словами. Их участие повлияло как на стиль изложения, так и на содержание книги, а их предложения и критика помогли мне исправить ошибки и упростить многие доказательства. Я особенно благодарен Жонасу де Миранда Гомесу. Имен- Именно он первым высказал мысль об издании английского вари- варианта и провел все необходимые переговоры. Без него книга попросту не зародилась бы. Я также чрезвычайно благода- благодарен Амилькару Пачеко и Мартину Холланду за предложения и комментарии. И, наконец, я выражаю благодарность всем работникам из- издательства А. К. Петере, с которыми я сотрудничал при со- создании этой книги. Их поддержка и спокойствие, даже в мо- моменты, когда у меня опускались руки, помогли мне довести работу до завершения. Рио де Жанейро, 18 июля 1998 года 2В русском переводе основные теоремы и алгоритмы присутствуют в содержании или в предметном указателе. — Прим. перев.
Глава 1. Введение В роли главного героя нашей книги выступает система ши- шифрования с открытым ключом, известная под именем RSA. Вся математика, о которой мы будем говорить, так или ина- иначе связана с этой системой. Во введении приведено краткое (и не всегда полное) описание RSA и краткое изложение исто- истории области математики, лежащей в ее основе - теории чисел. § 1.1. Криптография Греческое слово криптос означает «секретный, скрытый». Криптография — это искусство так маскировать сообщения, чтобы понять их мог только адресат. У процесса шифрова- шифрования две стороны. Первая представляет собой процедуру мас- маскировки исходного сообщения, или обычного текста. Такая процедура называется кодированием, а закодированное сооб- сообщение — шифровкой. Правомочному получателю сообщения должна быть известна обратная процедура перевода шифров- шифровки в исходное сообщение. Она называется декодированием или дешифровкой. В детстве многие из нас играли в простые шифры. Про- Простейший из них заменяет каждую букву следующей по алфа-
§ 1.1. Криптография 15 виту, а букву Я буквой А. По сути этот шифр совпадает с тем, которым пользовался Цезарь, обмениваясь посланиями с римскими генералами по всей Европе. У криптографии есть близнец — криптоанализ, искусство взламывания шифров. Разумеется, «взломать» шифр означает найти способ декодирования без знания ключа; этим и зани- занимаются дешифровалыцики. Взломать шифр Цезаря очень лег- легко. Той же слабостью страдают все процедуры кодирования, основанные на систематической замене одних букв другими, поскольку средняя частота, с которой встречаются буквы дан- данного языка, более или менее постоянна. Например, в англий- английском языке чаще всего используются буквы Е, Т и А. Поэтому можно угадать буквы, соответствующие наиболее часто по- повторяющимся символам шифровки. Более того, в английском языке чаще всего встречаются слова «the» и «and». Поэтому возможно, что группы из трех символов, которых в шифровке больше всего, соответствуют одному из этих слов, и так далее. Подобная стратегия называется частотным анализом. Заметим, что мы предполагаем сообщение достаточно длин- длинным. Всегда можно составить короткое послание, в котором частоты букв и слов будут сколь угодно невероятны. Одна- Однако в длинных сообщениях такое почти невозможно, поскольку частотные характеристики присущи самому языку. У криптоанализа много и других задач помимо взлома ши- шифров, и при их решении частотный анализ играет чрезвычай- чрезвычайно важную роль. Одним из вариантов применения является расшифровка древних надписей. Возможно, наиболее извест- известным результатом в этой области служит расшифровка еги- египетских иероглифов Дж.-Ф.Шампольоном (J.-F. Champollion) в 1822 году. Ключом к расшифровке послужил камень Розет- Розетты — массив черного базальта, найденный в 1799 году, ко- который находится теперь в Британском музее в Лондоне. На камне один текст записан тремя способами: иероглифическим, демотическим и по-гречески.
16 Введение Во времена Шампольона было широко распространено мне- мнение, будто египетские иероглифы были логографической си- системой записи. В таких системах каждому иероглифу соот- соответствует понятие. Среди используемых и по сю пору систем записи ближе всего к логографическим подходит китайская. У мудрых современников Шампольона было много оснований верить в логографическую теорию. Кроме всего прочего, к наиболее старым теориям иероглифов относится предположе- предположение о том, что они представляют собой вид иероглифического письма. Такие сведения были собраны неким Хораполлоном из Нилополиса (Horapollo of Nilopolis) в четвертом или пятом веке нашей эры, когда навыки записи и чтения древних надписей были уже практически утрачены. Шампольон решил проверить предположение Хораполлона, подвергнув частотному анализу тексты на камне Розетты. Он начал с подсчета слов в греческом тексте я насчитал их 486. Если бы каждый иероглиф соответствовал одному понятию (или слову), то их число в иероглифическом тексте должно было быть приблизительно таким же. Однако Шампольон на- насчитал 1419 символов, что значительно превышало ожидаемую величину. Значит, иероглифы не образовывали логографиче- логографическую систему. На этом работа Шампольона не завершилась, и к 1822 году он нашел в конце концов ключ к расшифровке системы запи- записи древних египтян. Теперь нам известно, что эта система чрезвычайно сложна. По существу она лого-силлабическая, а значит одним символом обозначается либо слово, либо слог, с которого это слово начинается. Но это еще не все. Символ может играть и роль детерминатива. Например, после имени человека египтяне могли вставлять мужскую или женскую фи- фигуру, что позволяло писцу уточнить, идет ли речь о мужчине или о женщине. Система иероглифической записи и история ее расшифровки подробно описаны в работе [12]. Безусловно, при использовании компьютера частотный ана- анализ значительно ускоряется. Поэтому большинство ранних ме-
§ 1.1. Криптография 17 годов шифрования устарели. Не будем забывать, что некото- некоторые из первых компьютеров предназначались для взламыва- взламывания немецких кодов во время Второй мировой войны. В наше время передача информации по Интернету с помо- помощью компьютеров бросает криптографам новый вызов. Со- Сообщения передаются по телефонным линиям, поэтому если их содержание требует секретности, то их следует кодировать. При этом секрет может быть даже не правительственным, а просто номером Вашей кредитной карты! Представьте се- себе, что таким образом осуществляются банковские операции какой-нибудь фирмы. Две проблемы немедленно выдвигаются на передний план. Во-первых, нужно не допустить, чтобы пе- перехваченное сообщение могло быть прочитано. Во-вторых, у банка должен быть способ проверить, что сообщение послано служащим компании, имеющим на это право. Другими слова- словами, нужно иметь возможность подписать электронное сообще- сообщение. Многие из используемых в этих новых условиях шифров принадлежат к типу, известному под названием «система ши- шифрования с открытым ключом». Такие системы были введены в 1976 году Диффи (Diffie) и Хеллманом (Hellman) из Стэн- форда и, независимо, Мерклем (Merkle) из Университета Ка- Калифорнии. В системе шифрования с открытым ключом умение шифровать сообщения не позволяет легко их расшифровать. Поэтому можно рассказывать всем и каждому, как зашифро- зашифровать сообщения, отправляемые в банк, не подвергая систему опасности. Преимущества такого подхода при коммерческих операциях очевидны. На первый взгляд, этот подход нельзя реализовать. Рас- Рассмотрим, например, шифр, в котором каждая буква заменяет- заменяется следующей. Тогда для расшифровки нужно каждую букву сообщения заменить идущей в алфавите непосредственно пе- перед ней. Значит для этого шифра знание процесса кодирова- кодирования немедленно дает и процедуру декодирования. В отличие
18 Введение от такого шифра, у систем кодирования с открытым ключом есть «ловушка» — операция, которая легко выполняется в од- одном направлении и трудно в обратном. Пример такой ловушки рассматривается в следующем параграфе, где мы описываем одну из наиболее распространенных систем шифрования с от- открытым ключом — систему RSA. § 1.2. Система шифрования RSA Из систем кодирования с открытым ключом лучше всего известна и наиболее широко распространена система RSA. Ее изобрели в 1978 году Ривест, Шамир и Адлеман из МТИ ([1]). Подробное описание этой системы будет дано только в послед- последней главе — оно опирается на идеи и методы, которые изла- излагаются на протяжении всей книги. Следует, однако, немного представить себе причины, по которым знание системы ко- кодирования RSA не позволяет немедленно вывести процедуру декодирования. Здесь мы сталкиваемся с примером ловушки, упомянутой в конце предыдущего параграфа. Предположим, что мы хотим установить систему RSA для какого-то пользователя. Основными составляющими системы служат два нечетных простых числа, скажем р и q. Обозначим через п произведение этих чисел, n = pq. Открытый, или ко- кодирующий, ключ этого пользователя системы RSA — число п (и еще одно число, которое нам пока не требуется). Секрет- Секретный, или декодирующий, ключ состоит, по существу, из чисел р и q. Таким образом, у каждого пользователя есть персо- персональная пара простых чисел, которую нужно держать в тай- тайне. Однако произведение этих простых чисел общедоступно. Поэтому если банк использует RSA, то любой желающий мо- может послать ему закодированное сообщение, поскольку ключ кодирования известен всем. Почему же тогда систему RSA трудно взломать? Ведь для нахождения р и q всего-то и надо, что разложить на множите-
§ 1.2. Система шифрования RSA 19 зт число п. Однако, если каждое из простых чисел содержит больше 100 цифр, то время и ресурсы, необходимые для разло- разложения числа п на множители, таковы, что взламывание кода становится очень трудным. Таким образом, ловушка в системе RSA заключается в том, что умножение чисел р и q для полу- получения числа п — простая операция, тогда как обратная зада- задача —- разложение числа п на множители для получения р и q — практически неразрешима. Другими словами, мы очень хоро- хорошо понимаем, как взломать RSA, однако на практике взлом не реализуем. Не следует забывать, однако, что препятствие носит чисто технологический характер: можно представить себе, что в один прекрасный день развитие компьютеров или изобретение лучших способов разложения на множители сде- сделают систему RSA устаревшей. Драматическое подтвержде- подтверждение этому было получено при взломе системы RSA-129. Это те- тестовое сообщение было зашифровано создателями RSA в 1977 году; его название объясняется тем, что в кодирующем ключе было 129 цифр. Было подсчитано, что его расшифровка до- доступными методами займет не менее 40 ■ 1015 лет. В 1986 году 129-значное число было разложено на множители с использо- использованием новой элементной базы компьютеров и возможностей Интернета. Разложение потребовало восьми месяцев работы, на протяжении которых были использованы компьютеры 600 добровольцев из 25-ти стран. Каждый из компьютеров рабо- работал над маленьким кусочком задачи в свободное от других заданий время. Затем все результаты были сведены воедино с использованием суперкомпьютера. Достижения в этой обла- области были настолько стремительны, что разложение большего числа RSA-130 потребовало в 1996 году лишь 15 процентов машинного времени, затраченного на RSA-129. Подводя итог предыдущему обсуждению, мы заключаем, что 1) для реализации системы RSA необходимо иметь два боль- больших простых числа р и q;
20 Введение 2) для кодирования сообщений с помощью RSA мы пользу- пользуемся числом п = pq\ 3) для декодирования шифровки RSA мы должны знать чи- числа р и q; 4) безопасность системы RSA определяется тем, что разло- разложить число п на множители ри q трудно, поскольку они очень велики. После того, как мы, наконец, вплотную познакомимся с RSA в главе 12, мы поймем, что хотя приведенные утверждения и не вполне точны, они отражают все основные особенности системы. Не обратили ли Вы внимание на то, что утверждения C) и D) противоречат друг другу? И вправду, безопасность си- системы RSA опирается на трудность разложения числа на про- простые множители. Число п трудно разложить на множители, поскольку оно очень велико. Однако число п = pq является большим, только если р и q велики, и мы должны доказать, что эти большие числа простые, т.е. они делятся только сами на себя и на 1. Таким образом, для доказательства простоты числа р необходимо применить к нему процедуру разложения на множители и убедиться, что у него нет множителей, от- отличных от 1 и р. Но не натыкаемся ли мы тут на то же самое препятствие, что и в случае с п? Если алгоритм разложения на множители работает слишком долго в случае п, не будет ли то же самое справедливо и для pi Так и есть, однако это не означает, что у нас нет других способов доказать простоту большого числа. Мы просто дока- доказываем простоту, не раскладывая число на множители. Име- Имеются методы проверки числа на простоту и разложимость, даже не пытающиеся искать разложение. Так, мы знаем, что число 22 4-1 — составное, однако ни один из его сомножи- сомножителей не известен. Ничего удивительного здесь нет, так как в указанном числе 4993 цифры. Косвенные методы проверки
§ 1.3. Системы символьньи: вычислений 21 чисел на простоту и разложимость обсуждаются в седьмой и одиннадцатой главах. Предыдущее обсуждение показывает, что для того, чтобы объяснить систему шифрования RSA и реализовать ее, нужно хорошо знать свойства целых чисел. Особенно тесно связаны с ней два вопроса: • как эффективно раскладывать данное целое число на мно- множители? • как доказывать, что данное целое число простое? Как мы уже видели, ответ на второй вопрос, хотя он и близко связан с первым, не вытекает непосредственно из ответа на первый вопрос. Область математики, занимающаяся изучени- изучением свойств целых чисел, называется теорией чисел. Это одна из старейших отраслей математической науки, а упомянутые выше вопросы принадлежат к числу наиболее ранних проблем в теории чисел, рассматривавшихся человечеством. Есть еще один вопрос, более практического характера, ко- который следует упомянуть прежде, чем мы перейдем к более по- подробному обсуждению теории чисел. Открытый ключ в систе- системе шифрования RSA — очень большое число. В практических приложениях используются числа с более, чем 200 знаками. Как можно работать с такими большими числами? Конечно, нужен компьютер; однако в большинстве языков программи- программирования нет средств для непосредственной работы с такими огромными числами. Простейший выход состоит в использо- использовании какой-нибудь системы символьных вычислений. § 1.3. Системы символьных вычислении Любая система символьных вычислений предназначена для точных вычислений с очень большими целыми числами и дробя- дробями и для символьных вычислений с функциями — многочлена- многочленами, синусами, косинусами и т.д. Под «точными вычислениями»
22 Введение мы подразумеваем, что система не пользуется арифметикой с плавающей точкой, пока от нее этого не потребуют. Напри- Например, дроби в компьютерной алгебре представляются в виде пары (числитель/знаменатель), и все вычисления с ними про- проводятся так же, как на бумаге. С нашей точки зрения, основное достоинство систем сим- символьных вычислений состоит в том, что они позволяют прово- проводить вычисления с очень большими целыми числами. В боль- большей части книги мы просто предполагаем, что такие вычи- вычисления возможны. На самом деле, в такой книге, как наша, не стоит вдаваться в подробности методов представления боль- больших чисел и вычислений с ними. С другой стороны, не сле- следует оставлять читателя в полном неведении о том, как это происходит, поскольку именно эти методы лежат в основе все- всего происходящего. В настоящем параграфе мы примем про- промежуточное решение: мы объясним, как можно представлять большие положительные целые числа, и обсудим, как написать программу для сложения двух таких чисел. Это одно из немногих мест книги, где предполагается, что читатель знаком с программированием. Поскольку результа- результаты этого параграфа больше нигде не используются, его можно с чистой совестью пропустить. Большинство языков программирования позволяют прово- проводить вычисления с целыми числами. Однако эти числа ограни- ограничены по величине. Другими словами, стандартные языки про- программирования ведут себя так, как если бы множество целых чисел было конечно, да к тому же не очень велико. Безуслов- Безусловно, для наших целей этого недостаточно. Нам нужно уметь работать с очень большими числами; более того, мы даже не можем предсказать их максимальную величину. Эту проблему можно обойти, написав специальные программы для предста- представления таких чисел и вычислений с ними. Сами программы могут быть написаны на одном из стандартных языков про- программирования. Таким образом, мы будем предполагать, что
§ 1.3. Системы символьных вычислений 2; у нас есть компьютер, способный представлять целые числе вплоть до некоторой верхней границы, которая определяете выбранным языком, и проводить вычисления с ними. Такю числа будут называться целыми числами с простой точно стью. Программы, которые мы хотим написать, будут, с по мощью операций над целыми числами с простой точностью представлять целые числа с и производить действия над ними с многократной точностью. Нет необходимости упоминать о том, что память любо го компьютера конечна, поэтому величина целых чисел, с ко торыми он может работать, разумеется, ограничена. Тага» образом, когда мы говорим о целых числах «неопределенноп размера», мы имеем в виду в действительности, что програм ма может работать с достаточно большими числами, и во все: практических приложениях на этот верхний предел можно н обращать внимания. Напомним, что мы предполагаем наличие компьютера языком программирования, умеющим обрабатывать числа простой точностью. Обозначим через b наибольшую степен числа 10, представимую в виде целого числа с простой тоя ностью в этом языке. Тогда 6 будет основанием системы счл сления, в которой мы будем записывать числа с многократно точностью. Для любого целого числа п > 0 существует едиь ственный набор целых чисел ао, ах,..., од между 0 и 6—1 таю» что п = од • Ък ■] 1- а2 • Ь2 + ai • 6 + а0. Позиционное представление числа п по основанию Ь — эт запись п = (ак . Целые числа ао, ■ ■. ,а& представляют собой «цифры» предстг вления числа п по основанию 6. В компьютере числу п отв< чает список, каждый элемент которого содержит цифру пре; ставления числа п по основанию Ь. Напомним, что цифры - это целые числа с простой точностью, и поэтому компьюте
24 Введение умеет обращаться с ними. Число элементов списка зависит от величины п. Разумеется, мы хотим не просто представлять большие це- целые числа в компьютере, а еще и оперировать с ними. Сло- Сложение чисел в системе счисления с основанием 6 можно вы- выполнять точно так же, как и сложение в десятичной системе. Нужно позаботиться только о переносе в следующий разряд. Пусть мы хотим сложить два положительных целых числа1 с= (с*,...,С1,со)ь и d = (dk,...,di,da)b- Другими словами, мы хотим найти цифры so, si,..., предста- представляющие их сумму в системе счисления с основанием 6. Вы- Вычислим сначала со + do — просто сумму двух целых чисел с простой точностью2. Тогда последней цифрой суммы с + d бу- будет остаток от деления числа со + do на Ь. Если со + do < b, то переноса нет, и мы можем перейти к следующей цифре. Пред- Предположим, однако, что со + do > 6. Поскольку и со, и do меньше Ь, имеем со + d0 ^ 26 - 2. В частности, результат деления cq + do на Ь не может быть больше 1. Поэтому если цифра переноса в следующий разряд отлична от нуля, то она равна 1. Для вычисления цифры s\ можно действовать таким же образом, как и раньше, не за- забывая про цифру переноса из предыдущего разряда. Таким образом, Sj представляет собой остаток от деления на b числа С\ + d\ + цифра переноса. 1 Здесь предполагается, что слагаемое с меньшим числом цифр допол- дополняется нулями в старших разрядах. — Прим. перев. 2В этом месте автор не совсем точен. Сумма двух цифр может превос- превосходить границу целых чисел с простой точностью. Ситуация усугубляет- усугубляется, если мы рассматриваем произведение двух цифр. Один из возможных выходов состоит в том, чтобы в качестве основания системы счисления брать число Ь, такое что Ь2 является наибольшей четной степенью числа 10, представимой в виде числа с простой точностью. — Прим. перев.
§ 1 4. Греки и целые числа 25 Более того, если это число больше 6, то вновь появится цифра переноса 1, которую нужно учитывать при подсчете цифры S2- Процесс продолжается до тех пор, пока не исчерпаются все цифры по основанию Ъ у обоих слагаемых. Программу сложения целых чисел по основанию 6, исполь- использующую их списочное представление, написать очень легко. Умножение тоже очень похоже на умножение на бумаге. При переходе к делению, однако, возникают интересные задачи, которые вкратце обсуждаются в § 2.2. Следует предупредить также, что хорошее программное обеспечение для вычислений с целыми числами не сводится к простому выполнению арифметических операций. Посмотрим, что происходит при умножении двух целых чисел. Обычный спо- способ умножения приводит к появлению большого числа промежу- промежуточных результатов, необходимость в которых отпадает по завершении вычисления. Если их не выловить и не удалить, то они будут продолжать занимать много места в памяти. Если умно- умножаемые числа велики, то накопление такого «мусора» быстро приведет к остановке системы. Поэтому у нас должен быть способ автоматического поиска и удаления лишних результатов. В этих комментариях чрезвычайно важная и быстро развива- развивающаяся область взаимодействия между программированием и математикой лишь затронута. Фундаментальное описание ме- методов вычислений с большими числами см. в [28] (на русском языке это можно посмотреть в книге3 [Д.4]). Более краткое из- изложение, содержащее, однако, подробное обсуждение предста- представления целых чисел в виде списков, можно найти в [2] ([Д.1]). § 1.4. Греки и целые числа Все античные цивилизации знали целые числа и умели опе- оперировать с ними. Это знание носило по большей части чисто Ссылки на русскоязычные источники добавлены при переводе.
26 Введение эвристический характер, однако для практических целей его было достаточно, поскольку числа использовались только для пересчета и ведения счетов. Греки, которым был присущ бо- более философский подход, начали рассматривать числа сами по себе, со своей собственной жизнью, а не как чистое сред- средство счета. В результате они разделили логику и арифметику. Первая оказалась для них «наукой об обращении с перенумеро- перенумерованными предметами, а не числами», тогда как вторая зани- занималась «умственной природой чисел». Вторая цитата принад- принадлежит Платону (Plato). В его «Республике» ([35]) мы читаем также: «... арифметика оказывает великое и возвышающее действие, побуждающее душу рассуждать об абс- абстрактных числах, препятствуя привлечению к до- доказательству видимых или осязаемых предметов.» Смешно, но сейчас мы пользуемся словом арифметика для обо- обозначения того, что греки называли логикой. Однако их ариф- арифметика не умерла; она превратилась в современную теорию чисел. Среди теоретико-числовых проблем, которыми занимались греки, находим: • метод вычисления наибольшего общего делителя двух це- целых чисел; • метод поиска положительных целых чисел, меньших дан- данного числа; • доказательство бесконечности множества простых чи- чисел. Эти задачи подробно обсуждаются в самой знаменитой из до- дошедших до нас греческих книг, «Элементах» Эвклида, напи- написанных в Александрии около 300 г. до н.э.
§ 1.5. Ферма, Эйлер и Гаусс 27 «Элементы» разделены на 13 книг. Три из них посвящены теории чисел, остальные — геометрии плоскости и трехмер- трехмерных тел, а также построению вещественных чисел и их свой- свойствам. Обсуждение теоретико-числовых проблем начинается в книге VII. В ней содержатся определения простых и состав- составных чисел и метод вычисления наибольшего общего делите- делителя путем последовательных делений. Книга VIII посвящена в основном геометрическим прогрессиям. В книге IX содержит- содержится доказательство того, что простых чисел бесконечно много, которое мы обсуждаем в §4.5, а также формула для совершен- совершенных чисел, которую можно найти в упражнениях к главе 3. Многие другие греческие математики занимались задача- задачами, теоретико-числовыми по своей природе. Первое место сре- среди них принадлежит Диофанту (Diophantus). В его «Арифме- «Арифметике», написанной около 250 г., он подробно рассматривает ре- решение неопределенных уравнений с целыми коэффициентами; подробности см. в §5.6. После Диофанта греческая матема- математика отошла от теории чисел, и хотя среди арабов, индийцев и в Европе в период Возрождения было много хороших мате- математиков, никто из них не занимался непосредственно теорией чисел. Этот предмет находился в оцепенении, пока не возро- возродился вновь, непосредственно из греческих источников, в XVII веке. § 1.5. Ферма, Эйлер и Гаусс В период Возрождения работы многих греческих авторов были открыты заново, отредактированы и опубликованы. Это не относится, однако, к греческим математикам. Например, Баше (Bachet) опубликовал оригинальный текст «Арифмети- «Арифметики» Диофанта только в 1621 году вместе с переводом на ла- латынь. Незадолго до 1636 года Пьер де Ферма, советник Вер- Верховного суда Тулузы, приобрел это издание. Ферма изучал ма- математику в свободное время; он прочитал и тщательно закон-
28 Введение спектировал свой экземпляр. Идеи, вызванные у Ферма чте- чтением книги Диофанта, знаменуют возрождение теории чисел в Европе. Ферма родился в 1601 году; он не был профессиональным математиком. Очень немногие тогда зарабатывали себе на жизнь математикой. Кроме того, ввиду отсутствия специаль- специальных математических журналов было очень непросто знако- знакомить других со своими результатами. Первый журнал, цели- целиком посвященный математике, появился только в 1794 году. Однако современник Ферма Паскаль говорил, допуская, воз- возможно, некоторое преувеличение, что математиков «так мало, как еще никогда не было ни в одном народе, и уже в тече- течение очень долгого времени». Поэтому математики того вре- времени могли более или менее эффективно обмениваться иде- идеями в письмах. Задача облегчалась тем, что находились лю- люди, бравшие на себя роль посредников, — получив последние новости, они пересылали их всем своим корреспондентам. Во времена Ферма самым знаменитым из этих посредников был отец Марэн Мерсенн (Mersenne). Круг его корреспондентов включал, помимо самого Ферма, такие светила как Паскаль (Pascal), Декарт (Descartes) и Роберваль (Roberval). Именно в форме писем к Мерсенну и другим математикам того времени до нас и дошла большая часть трудов Ферма. После смерти Ферма его сын Самюэль собрал все бумаги сво- своего отца, которые смог найти, намереваясь их опубликовать. Первый опубликованный том представлял собой издание Баше книги Диофанта с пометками Ферма на полях. Самая знамени- знаменитая из этих записей содержит утверждение, которое позднее нарекли «великой теоремой Ферма». На современном языке она гласит, что для любых целых чисел х>у,г, п таких, что хп + уп = zn и п ^ Z, справедливо равенство xyz = 0. Фер- Ферма утверждает, что он нашел «поистине замечательное» дока- доказательство этого факта, однако «поля недостаточно широки, чтобы его записать». Великая теорема Ферма была наконец
§ 1.5. Ферма, Эйлер и Гаусс 29 доказана в 1995 году — более 300 лет спустя. Дополнительные детали и необходимые ссылки см. в § 3.8. Математические работы Ферма не ограничивались теори- теорией чисел. Ему принадлежат также принципиальные результа- результаты в аналитической геометрии, интегральном и дифференци- дифференциальном исчислении. Кроме того, он делит с Паскалем (Pascal) честь открытия вероятности. Несмотря на любовь Ферма к теории чисел, ему не удалось заинтересовать ею своих совре- современников. Наследство от него принял Леонард Эйлер, который родился в 1707 году, через 42 года после смерти Ферма. Эйлер был одним из наиболее плодовитых математиков всех времен, он внес вклад во все разделы чистой и прикладной ма- математики, существовавшие в восемнадцатом веке. В отличие от Ферма, ему платили за математические исследования, он занимал посты в Берлинской и Санкт-Петербургской акаде- академиях. Эти академии были на самом деле исследовательскими институтами, в мемуарах которых публиковались статьи их членов. Интерес Эйлера к теории чисел был результатом перепис- переписки с Кристианом Гольдбахом (Christian Goldbach). Подобно своему предшественнику Мерсенну, Гольдбах не был великим математиком, занятие математикой было его хобби. Однако именно он навел Эйлера на работы Ферма по теории чисел. В постскриптуме к своему первому письму к Эйлеру, написан- написанному в 1729 году, Гольдбах добавляет «Знакомы ли Вы с наблюдением Ферма о том, что все числа 22" + 1 простые? Он говорит, что не мо- может этого доказать, и, насколько я знаю, никому другому это тоже не удалось.» Первая реакция Эйлера была скептической, однако Гольд- Гольдбах продолжал настаивать, и в 1730 году Эйлер принялся за чтение работ Ферма. Впоследствии он доказал многие резуль- результаты Ферма и развил их. В главе 10 мы опишем метод, с помо- помощью которого Эйлер ответил (отрицательно!) на вопрос, под-
30 Введение нятый Гольдбахом. Подробности истории чисел вида 22" + 1 можно найти в §4.3. После труда Эйлера теория чисел приобрела гораздо боль- большую популярность. Однако ее систематическое исследование началось только с книги К. Ф. Гаусса «Арифметические ис- исследования», опубликованной в 1801 году. Влияние книги Гаус- Гаусса было огромным; свидетельством тому то, что большинство книг, посвященных теории чисел, включая и нашу, следуют подходу Гаусса. Многие из приводимых здесь результатов и используемых методов взяты непосредственно из «Исследова- «Исследований». Гаусс был сыном ремесленника, но вундеркиндом, и его математические способности были замечены очень рано. Его вклад в математику огромен и захватывает столь различные области, как дифференциальная геометрия и небесная механи- механика. Ему принадлежат также важные продвижения в геодезии и физике. Важность его работы настолько велика, что совре- современники нарекли его «князем математиков». Ферма, Эйлер и Гаусс — герои этой книги. Большинство излагаемых здесь идей восходят либо к античной Греции, либо к работам одного из этих трех математиков. § 1.6. Проблемы теории чисел Нельзя завершить введение в теорию чисел, не попытав- попытавшись хотя бы объяснить, почему она настолько пленительна, что Гаусс назвал ее «королевой математики». Лучше всего со- создать представление о ее привлекательности, сформулировав несколько проблем; при простой формулировке их решение за- зачастую требует изобретательности и виртуозного владения техникой. Перечислим некоторые вопросы теории. Прочитав их, Вы можете попробовать расставить их по уровням сложности.
§ 1.6. Проблемы теории чисел 31 Возможно, приводимое ниже описание современного положе- положения дел с их решением удивит Вас. 1) Верно ли, что для любого простого числа р разность 2р-1 — 1 делится нар? 2) Существует ли такое простое число р, что 2р-1 — 1 де- делится на р3? 3) Верно ли, что всякое четное число, большее 2, предста- представляется в виде суммы двух простых чисел? 4) Существуют ли два последовательных натуральных чи- числа, отличных от 8 и 9, каждое из которых является сте- степенью простого числа? 5) Всякое ли нечетное простое число можно представить в виде суммы двух квадратов натуральных чисел? 6) Бесконечно ли множество пар простых чисел р, р + 2? 7) Бесконечно ли множество таких простых чисел р, что число 2Р — 1 также простое? Вопросы A) и B) очень похожи друг на друга. Более того, сравнивая их, можно даже прийти к заключению, что второй вопрос легче первого. Ведь для его решения достаточно про- просто привести пример простого числа, удовлетворяющего неко- некоторому свойству, тогда как в первом вопросе что-то похожее утверждается про все простые числа. Однако положительный ответ на вопрос A) был получен Ферма в семнадцатом веке, тогда как вопрос B) до сих пор остается открытым. Третий вопрос представляет собой знаменитую гипотезу Гольдбаха, и хотя он был поставлен более двухсот лет на- назад, ответ на него до сих пор не найден. Четвертый вопрос известен под именем гипотезы Каталана (Catalan); он так- также остается открытым. Однако известно, что если разность
32 Введение между некоторым кубом и некоторым квадратом равна ±1, то этот куб равен 8, а квадрат равен 9. Доказательство принад- принадлежит Эйлеру, и оно не очень сложное. Подробнее о гипотезе Каталана см. [42]. Ответ на вопрос E) отрицателен. Если остаток от деле- деления простого числа р на 4 равен 3, то не существует таких целых чисел х и у, что х2 + у2 = р. Этот результат принад- принадлежит Ферма; его доказательству посвящено упражнение 13 главы 5. Однако Ферма показал заодно, что если остаток от деления простого числа р на 4 равен 1, то ответ на вопрос утвердительный. Подробности см. в упражнении 14 главы 6. История проблемы обсуждается в [49] ([Д.13]). Вопрос F) — это знаменитая проблема о простых чис- числах-близнецах, и ответ на него неизвестен. Про бесконечность множества простых чисел знал, разумеется, еще Эвклид; его доказательство содержится в §4.5. Известно также, что для любой пары натуральных чисел о и г с наиболыпим общим де- делителем равным 1, множество простых чисел вида о 4- кг, где А; — натуральное число, бесконечно. Это утверждение было доказано Дирихле в 1837 году. Доказательству весьма част- частного случая этого утверждения посвящены упражнения с 3-го по 7-ое главы 4. Еще один близкий вопрос — бесконечно ли множество простых чисел р, для которых р 4- 2 и р + 6 тоже простые; ответ на него также неизвестен. Однако простое чи- число р, для которого р + 2 и р + 4 тоже простые, единственно; см. упражнение 9 главы 4. Последний вопрос тоже представляет собой открытую про- проблему. Числа вида 2П — 1 называются числами Мерсенна по причинам, которые объясняются в §4.2. Если число п в по- показателе степени составное, то составным является и число 2П — 1. Однако число Мерсенна, отвечающее простому показа- показателю, может быть как простым, так и составным. В § 10.4 мы изучим эффективный тест на простоту для чисел Мерсенна. Наибольшие из известных простых чисел имеют такой вид, и
§ 1.7. Теоремы и доказательства 33 для доказательства их простоты использовался именно этот тест. § 1.7. Теоремы и доказательства Как мы уже говорили, цель нашей книги — подробное изложение математических основ системы шифрования RSA. Разработка ее математического хребта была завершена к кон- концу девятнадцатого века усилиями древнегреческих математи- математиков, Ферма, Эйлера и Гаусса. Однако еще 20 лет назад боль- большинство приложений оставалось неизвестными, а некоторые теоремы, которые мы будем упоминать, появились лишь в по- последние годы. Многие из приводимых здесь результатов не будут для Вас новыми. К их числу относятся, например, способ вычисления наибольшего общего делителя, основанный на последователь- последовательных делениях, а также простейшие процедуры разложения на простые множители. Новизна может заключаться, однако, в самом подходе, поскольку мы доказываем каждое утвержде- утверждение, включая и корректность вычислительных процедур, ис- исходя из первичных принципов. Математика древнего Египта и Месопотамии представля- представляла собой набор правил для решения практических задач. Толь- Только ее объединение с греческой философией превратило ее в со- современную теоретическую науку. Первые греческие матема- математики — Фалес (Thales) и Пифагор (Pythagoras) — были также знаменитыми философами. Представление о том, что матема- математический факт можно доказывать, произросло из взаимодей- взаимодействия с философией. Помимо всего прочего, доказательство — это просто рассуждение, которое выводит некоторое утвер- утверждение из других, уже известных. А рассуждать греческие философы любили! Около 400 года до н.э. греческие математики почувство- почувствовали необходимость в более или менее точной формулировке
34 Введение предположений, лежащих в основе их работы. Поэтому и Эв- клид открывает свои «Начала» со строгих определений и ак- аксиом, на которых базируются его доказательства. Например, в начале первой книги он определяет точку, прямую, плос- плоскость, поверхность и т.д. Затем он формулирует аксиомы, ис- истинность которых он считает самоочевидной. Аксиомы объ- объясняют связи между ранее введенными объектами. Затем он показывает, каким образом гораздо более сложные факты об изучаемых объектах сводятся, путем логических рассужде- рассуждений, к аксиомам. Главное достоинство его подхода состоит в придании основательности всему зданию. Если фундамент до- достаточно прочный, то и все здание может возноситься высоко без опасения, что оно рухнет под собственным весом. Математический факт обычно называется теоремой. Это греческое слово исходно означало «наблюдение, теория». Его современное значение «доказываемое утверждение» восходит по меньшей мере к эвклидовым «Началам». Утверждение тео- теоремы часто принимает вид условного утверждения: если выполняется некоторое предположение, то спра- справедливо некоторое заключение. Доказательство такой теоремы представляет собой логиче- логическое рассуждение, которое показывает, как заключение вы- вытекает из предположения. Приведем пример: Теорема 1. Если а — четное целое число, то число а2 тоже четное. Предположение данной теоремы состоит в том, что о — четное число, а заключение — в том, что о2 тоже четное. Ра- Разумеется, чтобы показать, что заключение вытекает из пред- предположения, мы должны пользоваться базисными свойствами целых чисел. Для придания доказательствам незыблемости, все эти свойства следовало бы подробно перечислить. Нет не- необходимости говорить, что в элементарной книге, подобной нашей, это невозможно. Вместо этого мы просто делаем вид,
§ 1 7. Теоремы и доказательства 35 что «базисные свойства» действительно элементарны и Вы их хорошо знаете. Сюда входят, например, правила сложения и умножения целых чисел, а также утверждение о том, что меж- между любыми двумя целыми числами есть лишь конечное множе- множество целых чисел. Воспользуемся этими свойствами для дока- доказательства приведенной выше теоремы. Доказательство теоремы 1. Предположение теоремы о чет- четности а означает, что а делится на 2, см. § 3.1. Поэтому должно существовать такое число Ь, что о = 26. Возводя в квадрат по- последнее равенство, получаем о2 = BЬJ = 462 = 2 • B62). Поэтому число о2 также делится на 2. Другими словами, чи- число о2 четное, что и является заключением теоремы. Теорема 1 показывает, что из факта четности числа о вы- вытекает факт четности его квадрата. Обратным к условному утверждению «из А следует В» является условное утвержде- утверждение «из В следует А». Значит утверждение, обратное к те- теореме 1, звучит так: если целое число о2 четное, то и а — четкое целое число. Заметим, что если само утверждение ис- истинно, то это ничего не говорит нам об истинности обратно- обратного утверждения. Например, для истинного утверждения если целое число делится на 4, то оно четное, обратное утвер- утверждение ложно: число 6 четное, однако на 4 оно не делится. Если оба утверждения «из А следует В» и «из В следует А» истинны, то мы говорим, что А и В эквивалентны. Эквива- Эквивалентность обычно записывается в виде: «А выполняется, если и только если выполняется В». Таким образом, мы приходим к следующей теореме. Теорема 2. Целое число а четное, если и только если а2 тоже четное. Мы уже доказали, что если о четное, то и о2 тоже четное. Теперь мы должны доказать обратное утверждение. Прежде
36 Введение перейти к доказательству, обсудим еще один логический момент. Обозначим отрицание утверждения Р через не Р. На- Например, отрицание не Р утверждения Р: «число а четное» имеет вид «число о нечеткое». Пусть теперь Р и Q — два утверждения. Утверждение: «из не Р следует не Q», назы- называется противоположным к утверждению из Р следует Q. Любое утверждение истинно, если и только если его противо- противоположное тоже истинно. Подобное высказывание выглядит со- сомнительно только потому, что оно выражено на непривычном языке. Но представим себе следующую историю. Друг, пригла- приглашенный Вами на вечеринку, говорит: «Моя машина сломана, однако если ее вовремя починят, то я приеду». Если теперь Ваш друг не приезжает на вечеринку, то Вы заключаете, что его машину вовремя не починили, а это и есть противополож- противоположное к утверждению Вашего друга. Вернемся к доказательству теоремы 2. Доказательство теоремы 2. Мы уже видели, что если число о четное, то и число о2 четное. Осталось доказать, что если о2 четное, то и о будет четным. Вместо последнего утверждения мы будем доказывать противоположное ему, т.е. утверждение «если число о нечетное, то и о2 нечетное». Однако целое число, не являющееся четным, нечетно. Более того, всякое нечетное целое число представимо в виде «четное + 1». Поэтому для не- нечетного о существует целое число Ь, при котором о = 26 + 1. Возводя в квадрат обе части последней формулы, мы получаем о2 = B6 + IJ = 462 + 46 + 1 = 2 • B62 + 2) + 1, т.е. тоже нечетное число. Таким образом, утверждение, про- противоположное к исходному, истинно, а значит, истинно и ис- исходное утверждение, и мы доказали, что если о2 четно, то и о четно. Теорема 1 была сформулирована в виде «если о четно, то и о2 четно». Это означает, на самом деле, что квадрат лю- любого четного числа четен. Другими словами, мы доказываем
§ 1.7. Теоремы и доказательства 37 справедливость утверждения для всех четных чисел. Рассмо- Рассмотрим теперь утверждение «всякое четное число делится на 4». Мы снова указываем на общее свойство всех четных чисел, однако на сей раз утверждение оказывается ложным. Почему? Например, потому, что число 6 четное, однако на 4 оно не де- делится. Таким образом, утверждение о том, что какое-то свой- свойство присуще всем элементам некоторого множества, можно опровергнуть, предъявив элемент, для которого оно не выпол- выполняется. Такой элемент называется контрпримером к утвер- утверждению. Не всегда утверждение теоремы записывается в приведен- приведенном выше условном виде. Иногда, например, утверждается, что объект с заданными свойствами существует. Так, для лю- любого вещественного числа х существует такое целое число п, что п > х. Самый естественный способ доказательства по- подобных теорем состоит в предъявлении явного метода для на- нахождения такого объекта. Если в приведенном выше примере обозначить целую часть числа1 х через т, то т + 1 является целым числом, большим а;, и мы можем положить п = т + 1. Предположив теперь, что десятичное представление числа х известно, мы легко найдем п с помощью описанного метода. Однако подобные утверждения можно доказывать и не указы- указывая способа построения объекта. Такое доказательство назы- называется неконструктивным доказательством существования. Оно не настолько таинственно, как может показаться. Мы зна- знаем, например, что в любой компании из 400 человек есть двое с совпадающим днем рождения, поскольку 400 > 366. Хотя такое рассуждение и верно, оно не дает нам способа найти та- таких двух человек; значит это неконструктивное доказатель- доказательство существования. Большинство книг по теории чисел широко используют не- неконструктивные доказательства даже при наличии конструк- 1 Целой частью вещественного числа х называется наибольшее целое число [х], удовлетворяющее неравенству [х] ^х.— Прим. перев.
38 Введение тивных. Это не просто вопрос вкуса: часто конструктивные доказательства выглядят гораздо более неуклюже, чем анало- аналогичные доказательства чистого существования, а для матема- математиков элегантность значит не меньше, чем для художников. В этой книге мы будем, однако, по мере сил избегать некон- неконструктивных доказательств. Такой подход объясняется, в пер- первую очередь, тем, что нас интересуют приложения в крипто- криптографии. Поэтому не достаточно просто знать, что у состав- составного числа есть нетривиальный множитель, нужно уметь его отыскивать. Эти краткие заметки должны позволить Вам приступить к чтению. Методы доказательств будут подробнее разобраны ниже, прежде всего в § 3.7 и § 6.2. Однако необходимо с самого начала понять, что искусство доказательства теорем следует заботливо взращивать, и лучший способ выращивания — ча- частое упражнение. Когда Птолемей, царь египетский, спросил Эвклида, нет ли более простого способа изучения геометрии, чем штудирование «Начал», ответ математика гласил: «В гео- геометрии нет царской дороги». Истинное во времена Эвклида, это утверждение сохраняет свою справедливость и по сей день.
Глава 2. Фундаментальные алгоритмы Два самых фундаментальных алгоритма — это алгоритм деления и алгоритм Эвклида. Оба они были известны матема- математикам Древней Греции — они содержатся в «Началах» Эвкли- Эвклида, написанных около 300 г. до н.э. Алгоритм деления пред- предназначен для вычисления неполного частного и остатка при делении двух целых чисел. Алгоритм Эвклида вычисляет наи- наибольший общий делитель двух целых чисел. По мере чтения книги Вы убедитесь в их фундаментальности. §2.1. Алгоритмы Оксфордский словарь английского языка дает следующее определение понятия «алгоритм»: «процесс или набор правил, обычно выраженный посредством алгебраических обозначений; в насто- настоящее время используется, как правило, в програм- программировании, машинном переводе и лингвистике.» Если не отходить слишком далеко в сторону, то можно ска- сказать, что алгоритм представляет собой рецепт решения задач определенного вида.
40 Фундаментальные алгоритмы Для начала проанализируем детально какой-нибудь про- простейший рецепт. Пусть мы печем пирог. В хорошей кулинар- кулинарной книге за названием рецепта следует список используемых продуктов. Затем следуют инструкции, объясняющие, что сле- следует сделать с продуктами, чтобы получился пирог. Инструк- Инструкции могут иметь вид «просеять, смешать, взбить, выпечь». В конце концов получается готовый результат — пирог, при- пригодный к употреблению. Похожим образом устроен и любой другой алгоритм. При описании алгоритма мы должны определить его «ввод» и «вы- «вывод». Ввод соответствует набору продуктов, используемых в рецепте, вывод — результату, который мы хотим получить; в приведенном выше примере таким результатом был пирог. Собственно алгоритм — это набор действий, которые нужно совершить над вводом, чтобы получить вывод. Предположим, что мы следовали рецепту с должной акку- аккуратностью. Тогда, разумеется, мы ожидаем, что когда печь будет открыта, в ней будет находиться именно пирог, а не ростбиф или печенье. Кроме того, при выборе рецепта мы предполагаем, что пирог испечется за конечное время, жела- желательно не слишком продолжительное. Точно так же мы ожи- ожидаем от любого алгоритма, что его результат будет совпадать с ожидаемым выводом. Хотелось бы, чтобы и время работы алгоритма было конечным, желательно не слишком большим. Разумеется, некоторые наборы инструкций могут выполнять- выполняться бесконечно долго. Вот простой пример: прибавить 1 к це- целому числу (вводу), затем прибавить 1 к результату и т.д. По- Поскольку целых чисел бесконечно много, программа с такими инструкциями будет работать бесконечно долго. Разумеется, этот набор инструкций бесполезен. С другой стороны, алгоритм может работать очень мед- медленно, но при этом приносить весьма ощутимую пользу. Мо- Может быть так, что более быстрые алгоритмы неизвестны, или сами правила очень просты и с их помощью можно доказать,
§ 2.1. Алгоритмы 41 что какая-то задача разрешима. Конечно, не всякую задачу можно решить, следуя определенному набору правил. Более удивительно то, что есть математические задачи, не допуска- допускающие алгоритмического решения. К несчастью, даже корот- короткое обсуждение этой проблемы увело бы нас слишком далеко в сторону. Подробности можно посмотреть в книге [13]. Заканчивающийся алгоритм приводит к теореме: «при та- таком-то и таком-то вводе получается такой-то и такой-то вы- вывод». Теоремы часто формулируют в виде «при данном пред- предположении справедливо следующее заключение». Для теоремы, связанной с алгоритмом, ввод алгоритма соответствует пред- предположению теоремы, а вывод — заключению. Пусть Вас не пугает некоторая неопределенность этих ком- комментариев: мы лишь договариваемся о терминологии. Все ста- станет яснее, когда мы перейдем к приложениям. Итак, алго- алгоритм — это рецепт, набор инструкций, для превращения на- набора продуктов (ввод) в некоторый результат (вывод). Пусть набор инструкций задан. Как проверить, решает ли он поста- поставленную задачу? Предположим, нам сообщили, что предста- представляют из себя ввод и вывод алгоритма. Теперь необходимо задать следующие вопросы: • всегда ли при исполнении этих инструкций мы получаем какой-нибудь результат за конечное время? • совпадает ли результат с ожидаемым? Вспомнив про кулинарную метафору, мы должны согла- согласиться с тем, что для рецепта пирога на эти вопросы от- ответить нельзя. Причина в том, что подобные утверждения нужно уметь доказывать до того, как сделано заключение, что данный набор инструкций представляет собой алгоритм. Ключевым словом последней фразы безусловно является «до- «доказательство» — мы проговорились. Под доказательством мы понимаем логическое рассуждение, в основе которого лежат базисные факты, или аксиомы, о которых мы договорились
42 Фундаментальные алгоритмы заранее. Для большинства алгоритмов в качестве аксиом вы- выступают элементарные свойства целых чисел. Разумеется, нет оснований полагать, что правильность рецепта пирога можно в этом смысле доказать. Происхождение слова алгоритм (или алгорифм) столь не- необычно, что ему стоит уделить внимание. Раньше его писа- писали в виде алгорисм, и происходит оно из латинизированного арабского имени Аль-Хорезми, то есть «рожденный в Хорез- Хорезме». Так звали арабского математика девятого века Абу Джа- фара Мохаммеда ибн Мусу (Abu J'afar Mohamed Ben Musa). Именно из его «Краткой книги об исчислении ал-джабра и ал- мукабалы» арабские числа распространились по всей Европе. Алгорисм означает попросту «число», что по-гречески назы- называется «арифмос». Затем, как любезно сообщает нам оксфорд- оксфордский словарь, эти два слова переплелись, и появилось слово алгорифм. Не вполне понятно, каким образом словом алгоритм начал называться «рецепт проведения вычислений», однако, похоже, это значение родилось совсем недавно. В английском оно впер- впервые появилось около 1812 года. Однако уже в семнадцатом ве- веке значение этого слова заметно расширилось. Мы видели, что исходное слово «алгоритм» означало число, однако затем так стали называться и вычисления. Похоже, что первым за пределы арифметики вывел это сло- слово математик и философ Г. В. Лейбниц (G. W. Leibniz). В сво- своем первом докладе о дифференциальном исчислении, опубли- опубликованном в 1684 г., Лейбниц называет правила нового исчи- исчисления алгоритмами. Столетие спустя оно обрело свое совре- современное значение. Гаусс многократно использует слово алго- алгоритм в своих «Арифметических исследованиях», написанных по латыни, обозначая им набор формул, составляющих метод нахождения решений какой-либо арифметической задачи. Ибн Мусе принадлежит еще по крайней мере один вклад в терминологию современной математики: слово алгебра обяза-
§ 2.2. Алгоритм деления 43 но своим происхождением названию его знаменитой книги, о которой говорилось выше. § 2.2. Алгоритм деления Проанализируем алгоритм деления в соответствии со схе- схемой, предложенной в предыдущем параграфе. Нас интересует деление целых чисел, поэтому задача состоит в том, чтобы найти неполное частное и остаток от деления двух положи- положительных целых чисел. При словах «частное» и «остаток» боль- большинству из нас приходит на ум картинка вроде следующей: 1234 1 108 I 154 108 54 22 46 В этом примере мы делим 1234 на 54; неполное частное оказалось равным 22, а остаток равен 46. В терминах перво- первого параграфа вводом алгоритма служат делимое и делитель; в приведенном примере они равны соответственно 1234 и 54. Вывод состоит из частного и остатка, значения которых в примере 22 и 46. В общем случае ввод алгоритма деления состоит из двух положительных чисел а и Ь. Деля а на Ь, мы получаем при вы- выводе числа q и г, которые связаны с а и Ь следующим образом: a = bq + rviO^r<b. Разумеется, q — это неполное частное, а г — остаток от де- деления. У этого определения есть простая интерпретация, ко- которую стоит иметь в виду. Допустим, мы хотим разломать полоску шоколада длины а на куски длины Ь. Алгоритм гово- говорит, что в результате мы получим q кусков длины Ь и кусочек
44 Фундаментальные алгоритмы меньшей длины г. Эту модель полезно помнить даже при при- применении теоремы в чисто математическом контексте. На самом деле шоколадная полоска наводит на простейший алгоритм получения q и г по заданным а и Ь. Алгоритм деления Ввод: натуральные числа а и Ь. Вывод: неотрицательные целые числа диг, для которых вы- выполнено равенство: a = bq + rjs.O^.r<b. Шаг 1. Положить Q = О и R = а. Шаг 2. Если R < Ь, то сообщить: «частное равно Q, а оста- остаток равен Д», и остановиться; в противном случае перейти к шагу 3. Шаг 3. Если R ^ 6, то вычесть 6 из R, увеличить Q на 1 и возвратиться к шагу 2. Такую форму записи алгоритмов мы будем использовать на протяжении всей книги. Для правильного прочтения ал- алгоритмов нужно придерживаться следующих простых согла- соглашений. Заметим, что алгоритм использует две переменные Q и R. Имена переменных выбраны такими потому, что по за- завершении работы алгоритма их значения будут равны непол- неполному частному и остатку от деления1 а на Ь. Для вычисления результата шаги 2 и 3 будут повторены несколько раз. Зна- Значит они образуют цикл. Значения переменных Q и R будут меняться от цикла к циклу. Именно поэтому они и называют- называются переменными! Изменение значений переменных происходит на шаге 3. Инструкция «вычесть Ь из R» означает, что пере- переменной R должно быть присвоено новое значение, равное ее значению после окончания предыдущего цикла, уменьшенному на Ь. Аналогично, инструкция «увеличить Q на 1» означает, 1 Термины «частное» и «остаток» в английском языке выглядят как «quotient» и «remainder»; отсюда и обозначения. — Прим. перев.
§ 2.3. Теорема деления 45 что значение Q после окончания предыдущего цикла следует увеличить на 1. Предположим, например, что а > 6. Тогда после первого прохода через шаг 3 мы получим Q = 1 и Д = о — 6. Если a — b^b, то, согласно алгоритму, мы должны выполнить шаг 3 еще раз. Проделав это, мы получаем Q = 2 и R = а—26, и т.д. Почему такой процесс не может повторяться бесконечно? Дру- Другими словами, почему алгоритм прекращает свою работу? За- Заметим, что в результате последовательного применения шага 3 мы получаем следующую последовательность значений пере- переменной R: Начальное а значение 1-й а цикл -Ь 2-й а цикл -2Ь 3-й а цикл -36 Это убывающая последовательность целых чисел. Посколь- Поскольку количество чисел между о и 0 конечно, последовательность с необходимостью попадает в число, .меньшее 6. Тогда на ша- шаге 2 работа останавливается, и алгоритм выводит значения переменных R и Q. Вот почему алгоритм всегда завершает работу. § 2.3. Теорема деления В §2.1 мы говорили о том, что всякому алгоритму соот- соответствует теорема. Сформулируем теорему, отвечающую ал- алгоритму деления. Теорема деления. Пусть а и 6 — натуральные числа. Тогда существует единственная пара неотрицательных це- целых чисел q иг таких, что a = bq + r и 0<г<6. Теорема содержит два утверждения про числа q и г. Во- первых, они существуют, во-вторых, они единственны. Мы
46 Фундаментальные алгоритмы уже знаем, что для данных а и Ь существуют такие числа q и г, как указано выше. Мы даже знаем, как их вычислить. Однако утверждение о единственности является новым. Что означа- означает единственность пары q и г? Предположим, что мы взяли два числа о и Ь и предложили их нескольким людям, попросив их найти такие q и г, что выполняются соотношения из тео- теоремы. Обратите внимание, что мы просто просим вычислить эти числа, не накладывая ограничений на метод вычисления. Единственность неполного частного и остатка означает, что все эти люди найдут одну и ту же пару чисел. В частно- частности, неважно, каким алгоритмом мы будем пользоваться для подсчета чисел рг; любые алгоритмы дадут один и тот же результат. Знать это безусловно полезно. Посмотрим, почему это правда. Пусть о и Ь — два нату- натуральных числа, которые мы предложили разным людям, ска- скажем, Карлу и Софии, и попросили их найти неполное частное и остаток, удовлетворяющие условиям, сформулированным в теореме. Результатом работы Карла являются числа рг,а София нашла числа q' w. r'. Нам известно только, что а — bq + r и 0 < г < 6; a = bql + г' и 0 < г' < Ь. Следует ли отсюда, что г = г' и q = q1? Поскольку числа г и г' целые, одно из них не меньше другого, скажем г' < г. Из тождества Карла мы заключаем, что г = a—bq, а из тождества Софии — что г' = a — bq'. Вычитая эти равенства, получаем г - г' = (о - bq) - (а - bq') = b{q' - q). С другой стороны, оба числа гиг' меньше Ь. По нашему пред- предположению, г ^ г', откуда 0 < г—г' < Ъ. Однако г—г' = b(q'—q), поэтому О < b{q' -q) <Ъ. Число b положительно, так что на него можно разделить. Зна- Значит, 0 < q' — q < 1. Но число q' — q целое, поэтому последнее
§ 2.4. Алгоритм Эвклида 47 неравенство выполняется в том и только в том случае, если q' — q = 0. Другими словами, q = q', откуда г = г' и единствен- единственность неполного частного и остатка доказана. Подводя итог, мы доказали, что алгоритм деления при- приводит к теореме, состоящей из двух утверждений: неполное частное и остаток от деления двух натуральных чисел всегда существуют и они единственны. Многие из теорем, которые еще будут обсуждаться в нашей книге, также утверждают су- существование и единственность некоторых объектов. Наиболее важная из них — теорема о разложении на простые множи- множители из главы 3. § 2.4. Алгоритм Эвклида Алгоритм Эвклида предназначен для вычисления наиболь- наибольшего общего делителя двух натуральных чисел, и мы посвятим начало этого параграфа подробному определению наибольше- наибольшего общего делителя. Во-первых, мы говорим, что целое число Ь делит целое чи- число а, если существует еще одно целое число с такое, что а = be. В этом случае мы говорим также, что Ь является делителем, или множителем числа о, а о, в свою очередь, — кратным числа Ь. Все это — различные способы сказать одно и то же. Разумеется, определить, является ли Ь делителем числа а, мож- можно, подсчитав остаток от деления а на Ь и проверив, равен ли он нулю. Пусть а и Ь — натуральные числа. Наибольший общий де- делитель чисел a vi b — это наибольшее целое число d, на ко- которое и о, и Ь делятся; тогда мы пишем d = НОД(о, Ь). Если НОД(а, Ь) = 1, то мы называем числа а и Ь взаимно простыми. Определение наибольшего общего делителя подсказывает следующий алгоритм его вычисления. Если числа а и b зада- заданы, то найдем все положительные делители числа а и все по- положительные делители числа Ь. Выберем все числа, входящие
48 Фундаментальные алгоритмы в оба множества, и возьмем наибольшее из них. Оно и будет наибольшим общим делителем. Эта процедура совсем проста, однако, как мы увидим в следующей главе, она чрезвычайно неэффективна при больших о и Ь. Проблема состоит в том, что неизвестно ни одного простого алгоритма разложения целых чисел на множители. К счастью, наибольший общий делитель можно подсчитать и другим, весьма эффективным способом. Эвклид приводит его в предложениях 1 и 2 книги VII своих «Элементов». Алго- Алгоритм Эвклида действует следующим образом. Разделим а на Ь с остатком; назовем этот остаток г\. Если г\ ф О, то разде- разделим Ь на г\ с остатком; пусть гг — остаток второго деления. Аналогично, если г% ф О, то разделим т\ на т^ и получим но- новый остаток гз- Таким образом, i-ый цикл алгоритма состоит из одного деления с остатком, причем делимое равно остатку, полученному в (г—2)-ом цикле, а делитель — остатку, получен- полученному в (t — 1)-ом цикле. Цикл повторяется до тех пор, пока мы не получим нулевого остатка; наименьший ненулевой остаток является наибольшим общим делителем чисел а и Ь. Применим алгоритм Эвклида для вычисления наибольшего общего делителя чисел 1234 и 54. Деления с остатком выглядят так: 1234 = 54-22-1- 46; 54 = 46 • 1 + 8; 46 = 8 • 5 + 6; 8 = 6-1 + 2; 6 = 2-3 + 0. Последний ненулевой остаток равен 2, поэтому НОДA234,54) = 2. Отметим, что неполные частные не принимают непосредственно- непосредственного участия в подсчете наибольшего общего делителя. Опишем теперь алгоритм, следуя модели, предложенной в §2.1 и §2.2.
§ 2.4. Алгоритм Эвклида 49 Алгоритм Эвклида Ввод: натуральные числа о и Ь, а ^ Ь. Вывод: наибольший общий делитель чисел а и 6. Шаг 1. Положить A = aw.R = B = b. Шаг 2. Заменить значение R остатком от деления А на В и перейти к шагу 3. Шаг 3. Если R = О, то сообщить: «наибольший общий дели- делитель чисел а и Ь равен В», и остановиться; в противном случае перейти к шагу 4. Шаг 4. Заменить значение А на значение В, значение В на значение R и возвратиться к шагу 2. Таким образом, для вычисления наибольшего общего де- делителя нам необходимо лишь выполнить несколько делений с остатком. Но почему наибольший общий делитель совпадает с последним ненулевым остатком в последовательности деле- делений? Да и вообще, почему в последовательности остатков все- всегда появится нуль? Заметим, что если бы нуль не появлялся, то процедура никогда бы не остановилась. Начнем со второго вопроса. Тем самым мы докажем, что алгоритм всегда завершает работу. Предположим, что для то- того, чтобы найти наибольший общий делитель чисел а и 6, мы проделали следующие деления с остатком: а = bqi + г\ и 0 < г\ < Ь; 6=Пд2 + Г2 И 0<Г2<П; П = Г2ЯЗ + ГЗ И 0 < Гз < Г2\ U и 0 < г4 < г3; Забудем на минуту про левый столбец. В правом столбце сто- стоит последовательность остатков. Заметим, что в ней всякий остаток меньше предыдущего, а также, что все остатки нео- неотрицательны. Переписав неравенства друг за другом, мы по-
50 Фундаментальные алгоритмы лучаем цепочку Ь>п > г2 >г3--' ^0. D.1) Поскольку между Ь и нулем есть лишь конечное число целых чисел, последовательность остатков не может продолжаться бесконечно. Однако в конце ее может стоять только нуль, а значит, алгоритм наверняка остановится. С помощью рассуждения из предыдущего параграфа мож- можно получить верхнюю оценку на число делений, необходимое для вычисления наибольшего общего делителя. Вернемся к не- неравенствам D.1). Каждое число в последовательности строго меньше предыдущего. Поэтому наибольшее возможное значе- значение остатка в каждом делении на единицу меньше значения остатка на предыдущем делении. Если бы в каждом цикле это наибольшее возможное значение достигалось, то для получе- получения нулевого остатка нам потребовалось бы Ь делений. Ясно, что это и есть наихудший возможный случай. Поэтому при применении алгоритма Эвклида к паре чисел а ^ Ь число де- делений не превосходит Ь. На самом деле, несложно показать, что при Ь > 3 число делений всегда меньше Ь. Зафиксируем число п. Тогда задачу лучше переформулировать так: для каких наименьших взаим- взаимно простых а и Ъ вычисление НОД(о, Ь) требует п делений? Заметим, что для того, чтобы числа а и Ь были минималь- минимально возможными, частные на каждом шаге тоже должны быть минимально возможными. Если теперь предположить, что де- делитель меньше делимого, то ясно, что наименьшее возможное частное двух целых чисел равно 1. Предположим, что мы вы- выполнили п делений до получения нулевого остатка. Тогда по- последовательность остатков имеет вид Ь > гг > г2 > п • • • ^ 0. Мы уже видели, однако, что в наихудшем возможном случае все неполные частные равны 1. Запишем теперь все деления,
§ 2.5. Крректность алгоритма Эвклида 51 начиная с последнего. В силу взаимной простоты чисел мы получаем гп-\ = 1; гп-з = гп-2 -1 + 1; Гп-4 = Гп-з • 1 + Гп_25 а = b-1 + ri. Вот как выглядит последовательность остатков при п = 10: 34, 21, 13, 8, 5, 3, 2, 1, 1, 0. Значит, наименьшая пара взаимно простых чисел о и Ь, для подсчета наибольшего общего делителя которых необходимо 10 делений с остатком, это о = 34 и Ь = 21. Заметьте, что хотя число Ь = 21 и наименьшее, все равно оно больше, чем п = 10. Приведенная выше последовательность — это начало знамени- знаменитой последовательности Фибоначчи. Вы снова встретитесь с ней в упражнении 6. § 2.5. Доказательство корректности алгоритма Эвклида Мы показали, что алгоритм обязательно остановится. Дей- Действительно, он не может выполнить больше делений с остат- остатком, чем меньшее из двух введенных чисел. Но почему послед- последний ненулевой остаток в точности равен наибольшему общему делителю? Чтобы это понять, нам понадобится один вспомо- вспомогательный результат из тех, что математики называют лем- леммами. Это слово древнегреческого происхождения, и означает оно то, что «предполагается» в доказательстве теоремы.
52 Фундаментальные алгоритмы Лемма. Пусть а и Ь — натуральные числа. Предполо- Предположим, что существуют такие целые числаg us, при которых a = bg + s. Тогда НОД(а, Ь) = НОД(Ь, s). Мы должны показать справедливость утверждения леммы. Воспользуемся, однако, сначала этой леммой и покажем, что последний ненулевой остаток в алгоритме Эвклида действи- действительно равен наибольшему общему делителю. Применяя алго- алгоритм к целым числам о > Ь > 0 и предполагая, что остаток после n-го деления равен нулю, имеем а = 6<7i -t~ *" 1 и 0 ^ Т\ < 6; Ь = r\q2 + г2 и 0 < Г2 < п; - гз и и ^ гз < г2; - Г4 и 0 < Г4 < гз; E-1) Гп-4 = Тп-гЧп-2 + Тп-2 И 0 < Гп-2 < Гп_з5 Гп-3 = Тп-2Яп-\ + Тп-1 И 0 < Гп-\ < Гп-2\ Тп-2 = Тп-\Чп И Гп = 0. На этот раз мы будем смотреть только на то, что происходит в левом столбце. Последнее равенство означает, что гп_2 де- делится на гп-\- Поэтому наибольший общий делитель этих двух чисел равен rn_i. Другими словами, НОД(гп_2,гп_1) = гп-\. Теперь в действие вступает лемма. Применяя ее к предпо- предпоследнему равенству, мы заключаем, что НОД(гп_з,гп_2) = причем последняя величина, как мы видели, равна гп-\. По- Повторное применение леммы, на этот раз к предыдущему ра- равенству, дает НОД(гп_4) гп_з) = НОД(гп_3, гп_2), что опять равно гп-\. Продолжая действовать таким же обра-
§ 2.5. Крректность алгоритма Эвклида 53 зом до вершины столбца, мы заключаем, что НОД(а, Ь) = гп-\ что и требовалось доказать. Доказательство корректности алгоритма будет завершено, если мы докажем лемму. Напомним, она утверждает, что если четыре неотрицательных целых числа a, b, g и s связаны соот- соотношением а = bg+s, то НОД(а, Ь) = НОД(Ь, s). Доказательство легче объяснить, если положить di = НОД(а, Ъ) и d2 = НОДF, а). Пока мы ничего не сделали, просто присвоили имена наиболь- наибольшим обшим делителям чисел о и Ь и чисел бия. Мы хотим доказать, что d\ = di- Доказательство проведем в два этапа. Сначала мы покажем, что d\ < d<i, а затем — что d<i < d\. Равенство чисел d\ и d% немедленно следует из этих двух не- неравенств. Покажем, что d\ ^ di\ второе неравенство доказывается аналогично, и мы оставляем его в качестве упражнения. На- Напомним, что d\ = НОД(о, Ь). Тогда d\ делит как а, так и Ь. Это означает, что существуют такие натуральные числа it и v, что а = d\u и Ь = d\v. Подставляя эти значения в равенство a = bg + s, получаем d\u = d\vg + s. Другими словами, s = d\U — d\vg = d\(u — vg). Но последнее равенство означает, что s делится на d\. Подведем итог. По предположению, d\ =■ НОД(а,6), поэто- поэтому d\ делит Ъ. Но проведенные вычисления показывают, что d\ также делит число s. Поэтому di является общим делите- делителем чисел бия. Однако da — наибольший из таких общих делителей, поэтому di ^ di, что мы и хотели доказать. Отметим, что в доказательстве существенно используется соотношение a = bg + s, аналогичное соотношению в теореме
54 Фундаментальные алгоритмы деления. Однако здесь нам нет необходимости предполагать, что s меньше 6; на самом деле s не должно быть и положи- положительным. Значит, предположение о том, что остаток от деле- деления меньше делителя, используется не в доказательстве того, что последний ненулевой остаток является наибольшим общим делителем, а только для того, чтобы доказать, что алгоритм завершает работу. § 2.6. Расширенный алгоритм Эвклида У алгоритма Эвклида, описанного в предыдущем парагра- параграфе, есть еще один вариант, более мощный. Мощный в данном случае не означает более быстрый. Достоинство нового вари- варианта в том, что наибольший общий делитель — лишь часть выходных данных. Пусть а и Ь — натуральные числа, ad — их наибольший общий делитель. Расширенный алгоритм Эвклида подсчитывает не только d, но и два целых числа а и /3 таких, что a-a + 0-b = d. F.1) Отметим, что (за исключением нескольких тривиальных слу- случаев) если а оказывается положительным, то /3 — отрицатель- отрицательное, и наоборот. Лучше всего вычислять эти числа, добавив некоторые ин- инструкции в обычный алгоритм Эвклида так, чтобы d, а и /3 подсчитывались одновременно. Именно поэтому новая проце- процедура называется расширенным алгоритмом Эвклида. Приво- Приводимый здесь вариант этого алгоритма принадлежит Кнуту, автору знаменитой книги «Искусство программирования». Ал- Алгоритм описан во втором томе этого сочинения, см. [28] ([Д.4]). Напомним, что алгоритм Эвклида состоит из последова- последовательности делений с остатком. Наибольший общий множитель представляет собой последний ненулевой остаток в этой по- последовательности. Значит, нам надо найти способ записывать последний ненулевой остаток в виде F.1).
§ 2.6. Расширенный алгоритм Эвклида 55 Суть алгоритма Кнута в том, что нам не следует ждать, пока мы дойдем до последнего ненулевого остатка; вместо этого нам стоит записывать в таком виде каждый из полу- получающихся остатков. Такие действия должны приводить, по- видимому, к большому количеству дополнительной работы. Как мы увидим позднее, это не совсем так. Предположим, что для вычисления наибольшего общего де- делителя чисел а и Ь мы выполнили последовательность деле- делений E.1). Перепишем ее, сопровождая каждую операцию за- записью предполагаемого представления остатка: Ь = r\ и Г2 и гъ = г3 и г3 = Г4 и г4 = = ахх 4- Ьух\ + Ьу4; F.2) 2Яп-1 + Гп-1 -2 = Тп-\Чп гп-\ = ахп-\ Числа xi,..., жп_1 и ух,...,уп-\ мы и хотим определить. Не- Необходимую информацию удобно свести в таблицу: остатки а Ь тг Гп-2 Гп-1 частные * * Яг Яг Яп-2 Яп-1 X Х-1 Xq Xl Х2 хз Хп-2 Xn-i У У-1 Уо У\ У2 Уз Уп-2 Уп-1 Отметим прежде всего, что таблица начинается с двух строчек, которым в ней не следовало бы быть. Действительно,
56 Фундаментальные алгоритмы стоящие в первом столбце этих строк числа не являются остат- остатками в каких-либо операциях деления. Мы даем этим строч- строчкам номера —1 и 0, подчеркивая тем самым их «незаконность». Вскоре мы обоснуем их необходимость. Что же мы хотим сделать? Мы хотим заполнить столбцы ж и у. Предположим на минуту, что мы получили таблицу за- заполненной до некоторой, скажем до (j — 1)-ой, строки. Для заполнения j-ой строки необходимо прежде всего разделить т3-ъ на tj-\. В результате получатся т3 и qj — первые два эле- элемента j-ой строки. Не будем забывать, что т^_з = rj-iq3 4- г3 и 0 ^ Tj < rj_i. Таким образом, гз =r3-2-'Tj-\q]. F.3) Из строчек j — 1 и j — 2 мы можем взять значения х3-2, aj-i, yj-2 и j/j-i- Можно записать 7j-_2 = ах-,-2 + Ьу3-2 и 7j_! = axj-i 4- by3-i. Подставляя эти значения в F.3), получаем r3 = {a.Xj-2 + Ьу3-2) - {axj-i + by3-i)q3 = = a(xj-2 - qjXj-i) + b(yj-2 - Поэтому XJ = XJ-2 ~ ЪХ3-1 и Vj = Заметим, что для вычисления xj и yj нам понадобились только частное qj и данные из двух строк таблицы, непосредствен- непосредственно предшествующих j-ой. Вот почему алгоритм Кнута такой эффективный. Для заполнения очередной строки достаточно знать две строчки, непосредственно предшествующие ей; все остальные строчки хранить не обязательно. Итак, мы получили рекуррентную процедуру. Все, что не- необходимо — это научиться ее запускать. Именно для этого мы
§ 2.6. Расширенный алгоритм Эвклида 57 и добавили в таблицу две «незаконные» строки. Найти в них значения ж и у очень просто. Придавая им тот же смысл, что и в остальных строках, мы должны получить о = ож_1 + Ьу_1 и b Поэтому можно просто положить Ж_1 = 1, у_а =0, Ж0 = 0 И и процедуру можно запускать. В результате цепочки делений с остатком мы получим ра- равенство НОД(о, Ь) = rn-i и вычислим такие целые числа xn-i и yn_i, что d = rn_i = ахп-\ 4- Ьуп-v Значит а = хп-\ и /3 = уп-1- Заметим, что, зная а и d = rn_i, мы можем найти /3 по формуле P = {d- аа)/Ъ. Поэтому достаточно вычислять только первые три столбца таблицы. Приведем численный пример. Если а = 1234 и Ь = 54, то (полная) таблица выглядит так: остатки 1234 54 46 8 6 2 0 частные * * 22 1 5 1 3 1- 0- 1- -1 X 1 0 - 22 • 0 = -1-1 = 5 • (-1) -1-6 = * = 1 -1 = 6 = -7 0- 1- -22 23- У 0 1 - 22 • 1 = 1 ■ (-22) - 5 • 23 = 1 • (-137) * -22 = 23 -137 = 160 Поэтому а = —7, /3 = 160 и (-7) • 1234 + 160 • 54 = 2.
58 Фундаментальные алгоритмы Пришло время разобраться, почему алгоритм дает пра- правильный ответ и почему он завершает свою работу. Как и подразумевается названием, расширенный алгоритм Эвкли- да представляет собой просто алгоритм Эвклида из предыду- предыдущего параграфа, дополненный инструкциями для вычисления значений ж и у. Поэтому он останавливается, и наибольший общий делитель составляет часть выходных данных. Кроме того, в каждой строке числа из столбцов х жу удовлетворяют равенству типа F.1), в котором число d заменено остатком из соответствующей строки. В частности, равенство F.1) выпол- выполняется, если в качестве а и 0 взять числа из столбцов ж и у строки, отвечающей последнему ненулевому остатку. Расши- Расширенный алгоритм Эвклида приводит к следующей теореме. Теорема. Пусть d — наибольший общий делитель нату- натуральных чисел а иЬ. Тогда существуют такие целые числа а и 0, что a-a + 0-b = d. Заметим, что пара чисел а, 0, упомянутая в теореме, не единственная. На самом деле таких пар бесконечно много. На- Например, возьмем а и 0, для которых а-а + 0 -b = d, и рассмо- рассмотрим какое-нибудь целое к. Тогда, как несложно проверить, (а + кЬ) ■ а + {0 - ка) • Ь = d. Приложив столько усилий к вычислению а и 0, разумно за- задаться вопросом, для чего эти числа могут понадобиться. Про- Проще всего добраться до ответа, продолжая читать эту книгу. Знание этих чисел необходимо для получения большого числа принципиально важных результатов, включая выбор ключей в системе шифрования RSA. Упражнения 1. Для каждой приведенной ниже пары целых чисел а, Ь найдите наибольший общий делитель и такие числа а и 0, что
Упражнения 59 НОД(о, Ь) = а ■ а + 0 ■ Ь: A) 14 и 35; B) 252 и 180; C) 6643 и 2873; D) 272, 828, 282 и 3242 (обобщите предварительно все понятия на случай, когда чисел больше двух). 2. Пусть п — натуральное число, большее единицы. Пока- Покажите, что A)НОД(я,2я + 1) = 1; B) НОДBп+1,Зп+1) = 1; C) НОД(п! + 1, (я + 1)! + 1) = 1. 3. Покажите, что для целых чисел о, Ь и п > 0 выполняется равенство Ьп - ап = (Ъ - а)(Ьп~1 + bn~2a + Ъп~3а2 + •■■ + Ьап~2 + а"). 4. Пусть п > т — натуральные числа, а г — остаток от деления п на т. A) Покажите, что остаток от деления 2П — 1 на 2т — 1 равен 2Г - 1. B) Покажите, что если число г четное, то остаток от деления 2П + 1 на 2т 4-1 равен 2Г 4-1. Подсказка: для вычисления частного воспользуйтесь уп- упражнением 3; утверждение вытекает из единственности остат- остатка. 5. Пусть п > т — натуральные числа. С помощью упраж- упражнения 4 вычислите НОДB2" +1,22 +1). Этот результат будет использован в упражнении 8 главы 4. 6. Каждое число, начиная с третьего, в последовательно- последовательности Фибоначчи 1,1,2,3,5,8,13,... является суммой двух пре- предыдущих. Обозначая п-ое число последовательности через /п,
60 Фундаментальные алгоритмы мы получаем /о = /l = 1 И fn = /n_i + fn-2- A) Покажите, что наибольший общий делитель двух последовательных членов последовательности Фи- Фибоначчи равен 1. B) Сколько делений с остатком необходимо выполнить для подсчета НОД(/„,/„_1)? 7. В этом упражнении мы описываем метод, с помощью которого можно найти решения уравнения ах+Ьу = с с целыми коэффициентами. Другими словами, мы хотим либо указать целые числа ж и у, удовлетворяющие этому уравнению, либо показать, что таких чисел нет. Пусть d = НОД(о, Ь). Тогда а = da' и Ь = db' для некоторых целых чисел а' и Ь'. Поэтому с = ах + Ьу = d(a'x + Ь'у). Покажите, что если у этого уравнения есть целые решения, то с делится на d. Если это так, то положим с = dd и рассмотрим приведен- приведенное уравнение а'х + Ь'у = d. Покажите, что любое решение исходного уравнения является решением приведенного урав- уравнения, и наоборот. Поэтому для того, чтобы найти решения исходного урав- уравнения, достаточно решить приведенное уравнение. Для этого воспользуемся расширенным алгоритмом Эвклида и вычислим целые числа а и /3 такие, что а • а + /3 • Ь = 1. Покажите, что тогда числа х = da и у = dp дают решение приведенного уравнения. 8. Воспользовавшись упражнением 7, напишите программу для решения уравнения ах+Ьу = с в целых числах. Программа должна получать на входе значения о, Ь и с. На выходе появля- появляется либо целочисленное решение уравнения, либо сообщение
Упражнения 61 о том, что решений нет. По существу, такая программа реа- реализует расширенный алгоритм Эвклида. 9. Цель настоящего упражнения — выяснить эксперимен- экспериментально, какая часть случайно сгенерированных пар целых чи- чисел состоит из взаимно простых чисел. Программа получает на входе натуральное число т, общее количество генерируе- генерируемых пар. К каждой их этих пар применяется алгоритм Эвкли- Эвклида, который находит их наибольший общий делитель, а затем подсчитывается число пар, для которых он равен 1. Выходом служит величина число пар взаимно простых чисел т Эта дробь задает меру вероятности того, что случайно выбран- выбранная пара1 состоит из взаимно простых чисел. Чтобы получить хорошее приближение для этой вероятности, программу нуж- нужно выполнять при больших значениях т. Прогоните ее десять раз при т = 105. Какие значения Вы получили? Теоретиче- Теоретический анализ дает правильную вероятность 6/тг2, см. [28] ([Д.4]). Насколько полученные Вами экспериментальные значения со- согласуются с этой величиной? 1 Термин «случайно выбранная пара» требует точного определения, ко- которого автор избегает. Строгую формулировку задачи можно найти в цитируемой книге Кнута. — Прим. перев.
Глава 3. Разложение на множители Стратегия «разделяй и властвуй» очень популярна в науке. Например, любое вещество разложимо на составляющие, на атомы. Более того, если свойства атомов хорошо известны, они многое говорят и о свойствах самого вещества. Нечто похожее происходит и в целых числах. В этом слу- случае роль атомов играют простые числа, а любое целое число раскладывается в произведение простых. Разложение служит главным инструментом в доказательстве многих свойств про- простых чисел. Найти разложение данного числа, однако, не все- всегда легко. Если число очень велико, то процедура его разло- разложения может потребовать длительного времени, и она предъ- предъявляет большие требования к мощности компьютера. §3.1. Теорема о разложении Начнем со строгого определения главных героев. Целое чи- число р называется простым, если р Ф ±1 и единственными его делителями являются числа ±1 и ±р. Так, числа 2,3,5 и —7 простые, а число 45 = 5 ■ 9 — нет. Почти всюду в книге мы будем использовать определение в несколько более узком смы- смысле, называя простым положительное простое число. Целое чи-
§ 3.1. Теорема о разложении 63 ело, отличное от ±1 и не простое, называется составным, или разложимым. Для составного числа п существуют такие це- целые числа о и 6, что 1 < о, Ъ < п и п = аЬ. Значит, число 45 составное. Заметим, что числа ±1 не являются ни составными, ни про- простыми. Они относятся к третьей группе — это единственные целые числа, у которых есть целые обратные. В конце этого параграфа мы сможем более убедительно объяснить, почему их не следует считать простыми. Теорема о разложении на множители. Всякое целое число п ^ 2 единственным образом записывается в виде где pi,P2, ■■■iPk — простые числа, 1 < р\ < pi < рз < • • • < Рк и ei,..., е^ — натуральные числа. Эта теорема настолько важна, что ее иногда называют основной теоремой арифметики. Впервые в таком виде она сформулирована Гауссом в § 16 его «Арифметических исследо- исследований», что не мешало, однако, его предшественникам неявно использовать ее. Как пишут Харди (Hardy) и Райт (Wright) в своей книге по теории чисел, «Гаусс первым превратил ариф- арифметику в систематическую науку», см. [23]. Показатели ех,...,е^ называются кратностями простых множителей в разложении числа п. Другими словами, кратно- кратностью множителя р\ в разложении числа п называется наиболь- наибольшее число е\ такое, что п делится на р\'. Отметим также, что у п есть к различных простых делителей, однако общее число его простых делителей равно е\ -\ 1- е*. Теорема содержит два различных утверждения. Во-первых, всякое целое число можно представить в виде произведения степеней простых чисел. Во-вторых, простые сомножители и их степени в разложении определены однозначно. Значит, нам нужно доказать две вещи: разложение существует, и оно един- единственно. Мы докажем их по отдельности. Как мы увидим, су-
64 Разложение на множители ществование разложения доказать несложно, а вот его един- единственность — гораздо более тонкий факт. После того, как теорема о разложении сформулирована, нам легче объяснить, почему ±1 не следует считать просты- простыми. Если включить их в число простых, то разложение на про- простые сомножители потеряет свойство единственности. Дей- Действительно, если число 1 простое, то 2 и I2-2 — два различных разложения числа 2 на простые сомножители. Тот же самый трюк с привлечением различных степеней числа 1 (или —1) да- дает бесконечно много разложений для любого целого числа. С целью избежать этих псевдоразложений (множество которых бесконечно и бессмысленно), мы и исключаем ±1 из определе- определения простого числа. §3.2. Существование разложения В этом параграфе мы показываем, что всякое целое число n ^ 2 может быть записано в виде произведения простых. Для доказательства мы приводим алгоритм, получающий на входе целое число п^2и выдающий простые сомножители числа п и их кратности. В качестве предварительного шага построим алгоритм, выходом которого является какой-нибудь простой делитель числа п. Для поиска простых делителей проще всего воспользовать- воспользоваться следующим алгоритмом. Попробуем разделить п на все це- целые числа от 2 до п — 1 подряд. Если одно из них делит п, то число п составное, и мы нашли наименьший из его делите- делителей. В противном случае число п простое. Кроме того, если п составное, то найденный нами делитель обязан быть простым. Посмотрим, почему справедливо последнее утверждение. Пусть / — целое число, такое что 2 < / ^ п — 1. Предположим, что / — наименьший делитель числа п, и пусть /' > 1 — дели- делитель числа /. По определению делимости, существуют такие
§ 3.2. Существование разложения 65 натуральные числа о и 6, что Значит, п = /' • ab и /' также является делителем числа п. Поскольку / — наименьший делитель п, должно выполняться неравенство / ^ /', но /' делит /, поэтому /' ^ /. Эти нера- неравенства означают, что / = /'. Тем самым мы доказали, что если число /' ■£ 1 делит /, то оно совпадает с /. Значит, / простое. Прежде, чем перейти к подробному описанию алгоритма, следует отметить еще один момент. Мы уже видели, что алго- алгоритм ведет поиск делителей только среди натуральных чисел. Как далеко ему следует забираться? Очевидно, что за п — 1 заходить не стоит, делитель числа не может превышать его самого. Однако можно сказать и кое-что посильнее. Действи- Действительно, можно не искать делители, превышающие у/п. Послед- Последнее утверждение вновь вытекает из того, что алгоритм ищет наименьший делитель числа п, больший чем 1. Поэтому нам необходимо показать только, что наименьший делитель / > 1 числа п удовлетворяет неравенству / ^ у/п. Это утверждение легко проверить. Пусть п = /о. Посколь- Поскольку / > 1 — наименьший делитель числа п, имеем / ^ а. Те- Теперь о = n/f и, следовательно, / ^ n/f, откуда вытекает, что /2 ^ п. Другими словами, / ^ у/п, что мы и хотели доказать. Подвести итог обсуждению можно следующим образом. Ал- Алгоритм занимается проверкой (начиная с 2 и пробегая по на- натуральным числам, не превышающим \/п) того, делится ли п на очередное число. Для составного числа п таким образом бу- будет найден его наименьший делитель, больший или равный 2. Как мы уже доказали, этот делитель будет обязательно про- простым. Если в процессе проверки ни один делитель не будет обнаружен, то само п — простое. Еще одно замечание практического характера. Обозначим через [а] целую часть вещественного числа а. Другими сло- словами, [а] — наибольшее целое число, меньшее или равное а.
66 Разложение на множители Так, [7г] = 3 и [\/2] = 1. Заметим, что для целого числа г ^ а выполняется неравенство г ^ [а]. Значит, для реализации опи- описанного выше алгоритма разложения нам достаточно знать только значение1 [\/п]. Процедура подсчета этого значения приведена в §П.1 приложения. Ниже мы приводим запись алгоритма разложения в соот- соответствии с канонической формой, предложенной в главе 2. Чтобы избежать излишней суеты, будем предполагать, что компьютер умеет вычислять значение [\/п]. Алгоритм разложения путем деления методом проб Ввод: натуральное число п. Вывод: натуральное число / > 1 — наименьший простой делитель числа п — или сообщение о том, что п простое. Шаг 1. Положить F = 2. Шаг 2. Если n/F целое, то сообщить: «F является делителем числа п», и завершить работу; в противном случае перейти к шагу 3. Шаг 3. Увеличить F на единицу и перейти к шагу 4. Шаг 4. Если F > [\/п], то сообщить: «п простое», и завер- завершить работу; в противном случае перейти к шагу 2. Мы описали способ определить, является ли число п > 2 простым, и подсчитать его делитель, если п составное. Ра- Разумеется, если п простое, то мы находим и его разложение. Однако, если п составное, то нам хотелось бы найти все его делители и указать их кратности. Для этого достаточно при- применить описанный алгоритм несколько раз. Предположим, что в результате применения предыдущего алгоритма к п мы нашли делитель gi этого числа. Тогда q\ — 'Строго говоря, даже это необязательно. Достаточно проверять, не превысил ли квадрат очередного проверяемого числа значение п. — Прим. перее.
§ 3.2. Существование разложения 67 его наименьший простой множитель. Применим тот же алго- алгоритм к числу n/qi. Предположим, что число njq\ составное и 92 — его наименьший простой делитель. Ясно, что qi ^ q\. Заметим, однако, что эти делители могут оказаться равными. Такая возможность реализуется, если п делится на q\. Продол- Продолжая в том же духе, мы применяем алгоритм к n/(qiq2) и т.д. В результате мы получаем последовательность простых чисел 91 ^ 92 ^ 9з ^ • • • ^ 9s> каждое из которых является делителем числа п. Этой после- последовательности отвечает последовательность частных п п п >> 91 9i 92 919293 Заметим, что это строго убывающая последовательность на- натуральных чисел, каждое из которых соответствует примене- применению алгоритма деления методом проб к п. Поскольку множе- множество натуральных чисел, меньших п, конечно, после несколь- нескольких шагов мы получим полное разложение п на простые мно- множители. Несложно проверить, что последнее число в последо- последовательности частных равно 1, что и служит критерием завер- завершения работы. Предположим теперь, что мы хотим представить разложе- разложение в том виде, в котором оно записано в теореме о разло- разложении. Все простые делители нам известны, осталось лишь подсчитать их кратности. Для этого нужно вычислить, сколь- сколько раз каждый простой сомножитель встречается в указанной последовательности простых чисел. Разумеется, подсчет про- проще всего вести одновременно с их вычислением. Посмотрим на примере, как работает такой алгоритм. До- Допустим, мы хотим разложить число п = 450. Алгоритм деле- деления методом проб дает первый наименьший простой множи- множитель 2. Повторное применение алгоритма, на этот раз к част- частному 450/2 = 225, дает множитель 3. Значит, делитель 3 числа
68 Разложение на множители 225 является и делителем числа 450. Применим алгоритм к чи- числу 75 = 225/3. Вновь наименьшим делителем оказывается 3. Значит, 450 делится на З2. Еще два выполнения алгоритма деления методом проб показывают, что 25 делится на 52, при- причем частное равно 1. Поэтому мы нашли полное разложение: 450 = 2 • З2 • 52. § 3.3. Эффективность алгоритма деления методом проб Описанный в предыдущем параграфе алгоритм легко по- понять и запрограммировать, однако он оказывается чрезвычай- чрезвычайно неэффективным. Поскольку для поиска разложения мы мно- многократно используем алгоритм деления методом проб, следует оценить эффективность последнего. Проиллюстрируем это на простом, но очень выразительном примере. При применении алгоритма деления методом проб к на- натуральному числу п > 2, худшим случаем оказывается тот, когда п простое. В этом случае алгоритм выполняет до оста- остановки [у/п] циклов. Для упрощения вычислений предположим, что п простое и в нем не меньше ста цифр. Сколько времени потребуется для подтверждения простоты числа п с помощью алгоритма деления методом проб? Мы предполагаем, что п > 10100, т.е. у/п > 1050. Значит мы должны повторить цикл по меньшей мере 1050 раз. Чтобы прикинуть, сколько это займет времени, допустим, что наш компьютер выполняет 1010 делений в секунду. Здесь мы пред- предполагаем, что никаких других операций, кроме операции де- деления, в цикле нет. Безусловно, это далеко не так, однако сде- сделаем такое допущение. Разделив первое число на второе, мы заключаем, что компьютеру потребуется 1040 секунд на про- проверку простоты числа п. Простой подсчет показывает, что на это уйдет приблизительно 1031 лет. По современным стан-
§ 3.4. Алгоритм Ферма разложения на множители 69 дартам это чересчур большой срок. Чтобы представить его себе, вспомним, что согласно наиболее распространенной точ- точке зрения, Большой Взрыв произошел около 2 ■ 1011 лет назад. Дополнительных комментариев не требуется: числа говорят сами за себя. Означает ли это, что алгоритм деления методом проб бес- бесполезен? Разумеется, нет. Допустим, что у раскладываемого числа есть маленький простой множитель, скажем, меньший, чем 106. Тогда алгоритм деления методом проб быстро его отыщет. С другой стороны, если у нас есть основания пола- полагать, что тестируемое число простое, то алгоритм деления методом проб не выглядит наилучшим решением. Есть много других алгоритмов разложения целых чисел, эффективность которых зависит от типа введенного числа. Так, алгоритм из §3.2 очень хорош для чисел с маленькими простыми делителями. В следующем параграфе мы изучим ал- алгоритм Ферма, который наиболее эффективен для таких чи- чисел п, у которых есть делитель (не обязательно простой), не сильно превышающий у/п. Следует помнить, что эффективный алгоритм разложения на множители случайно выбранного натурального числа неиз- неизвестен. Неясно только, действительно ли он не существует или у человечества пока не хватило ума до него додуматься. § 3.4. Алгоритм Ферма разложения на множители Алгоритм из § 3.2 эффективен только в случае, если у числа п, разложение которого мы ищем, есть маленький простой де- делитель. Насколько этот делитель должен быть мал, зависит от компьютера. В настоящем параграфе мы изучаем алгоритм, который эффективен, когда у п есть делитель (не обязательно простой), незначительно превосходящий у/п. Идею алгоритма
70 Разложение на множители придумал Ферма, и она требует гораздо большей изобрета- изобретательности, чем алгоритм деления методом проб. Предположим для начала, что п нечетное. Если бы оно было четным, то 2 было бы его делителем. Ключевая идея алгоритма состоит в том, чтобы попробовать представить п в виде п = = х2—у2, где х,у — неотрицательные целые числа. Если такие числа найдены, то п-х2 -у2 = (х-у){х + у). Значит, х — у и х + у являются делителями числа п. Чтобы отвлечься от посторонних деталей, будем предпола- предполагать, что компьютер умеет вычислять целую часть числа у/п. Проще всего применять алгоритм Ферма к полным квадра- квадратам. Если п = г2 для некоторого целого числа г, то г является делителем п. Тогда х = г и у = 0. С другой стороны, если у > 0, то Алгоритм Ферма разложения на множители Ввод: нечетное натуральное число п. Вывод: множитель числа п или сообщение о том, что п про- простое. Шаг 1. Положить х = \у/п\. Если п = ж2, то х является де- делителем числа п, и работа алгоритма останавливается; в про- противном случае увеличить х на 1 и перейти к шагу 2. Шаг 2. Если х = (п + 1)/2, то число п простое, и работа алгоритма останавливается; в противном случае вычислить у = \/х2 — п. Шаг 3. Если число у целое (т.е., если [у]2 = х2 — п), то п раскладывается в произведение {х + у){х — у), и работа алго- алгоритма останавливается; в противном случае увеличить х на 1 и перейти к шагу 2.
§ 3.5. Корректность алгоритма Ферма 71 Как показывает следующий пример, этот алгоритм очень прост в применении. Допустим, мы хотим разложить на мно- множители число п = 1342127. Сначала переменной х присваи- присваивается целая часть числа у/п. В примере она равна х = 1158. Однако х2 = 11582 = 1340964 < 1342127. Поэтому мы должны увеличить х на 1. Мы продолжим этот процесс до тех пор, пока число п не станет целым или не будет выполняться равенство х = (п + 1)/2. Заметим, что в нашем примере (п + 1)/2 = 671064. Значения переменных х и у после завершения каждого цикла приведены в таблице. X 1159 1160 1161 1162 1163 1164 \/х2 — п 33,97... 58,93... 76,11... 90,09... 102,18... 113 Таким образом, на шестом цикле мы получили целое число. Значит, искомые числа х = 1164 и у = 113. Соответствующие множители равны х + у = 1277 и х-у= 1051. §3.5. Доказательство корректности алгоритма Ферма Теперь мы должны доказать, что алгоритм Ферма выпол- выполняет свою задачу, и что он всегда завершает работу. При дока- доказательстве удобно разделить случай составного и случай про- простого числа п на входе. В первом случае мы должны показать,
72 Разложение на множители что существует натуральное число х, такое что [у/п] ^ х < < (п + 1)/2 и у/х2 — п целое число. Это означает, что если п составное, то алгоритм всегда находит делитель, меньший х, прежде, чем х становится равным (п + 1)/2. А если п про- простое, то мы должны проверить, что число \Jx2 — п не может оказаться целым при х < (п + 1)/2. Предположим, что п можно представить в виде произведе- произведения п = об, где о ^ Ъ. Мы хотим найти такие целые числа х и у, что п = х2 — у2. Другими словами, п = аЬ= (х- у){х + у) - х2 - у2. Поскольку х—у ^ х+у, разумно попытаться положить о = х—у и 6 = х + у. Решая эту систему уравнений относительно двух неизвестных, мы получаем Ь~а У= — И действительно, простое вычисление показывает, что 2 (Ь-а\2 \2 EЛ) Отметим, что х и у должны быть целыми, а это значит, что оба числа 6+о и 6—о должны быть четными. Именно поэтому мы и требуем, чтобы п было нечетным; тогда каждое из чисел о и 6, будучи делителем п, также нечетно, а значит и 6 + а, и Ь — а четные. Если число п четное, то алгоритм может рабо- работать неправильно. Если, например, п — 2к для нечетного к, то алгоритм никогда не завершит свою работу. Если п простое, то единственные возможные значения о и 6 — это о = 1, Ь = п. Таким образом, х = (п + 1)/2, и это наименьшее значение х, для которого число \/х2 — п целое. Рассмотрим теперь, что происходит, если п составное. Если о = Ь, то алгоритм находит делитель на шаге 1. Значит, мы можем предполагать, что п составное и не является полным
§ 3.5. Корректность алгоритма Ферма 73 квадратом. Другими словами, 1 < о < Ь < п. Мы утверждаем, что тогда алгоритм останавливается, так как а + Ь п + 1 < — < -у-- E-2) Начнем с доказательства неравенств. Правое неравенство говорит, что а+Ь < п+1. Заменяя п на аЬ и вычитая из обеих частей 6+1, мы приходим к неравенству о — 1 < аЬ — Ь. Однако о > 1, поэтому обе части неравенства можно разделить на а — 1. В результате мы получаем 1 < Ь. Это рассуждение показывает, что неравенство 1 < Ь эквива- эквивалентно неравенству а + Ь < п + 1. Поскольку 1 < о < Ь по предположению, мы показали, что (о + 6)/2 < (п + 1)/2. Рассмотрим теперь левое неравенство. Отметим для нача- начала, что поскольку [\/п] ^ у/п, нам достаточно доказать, что у/п ^ (о + Ь) /2. Ясно, что последнее неравенство выполняется тогда и только тогда, когда n ^ (о + ЬJ/4. Однако форму- формула E.1) дает (о + ЬJ (Ь - оJ —i п = -^-' и правая часть неотрицательна. Тем самым мы доказали не- неравенство (а + 6J/4 — n ^ 0, эквивалентное исходному. Вернемся к алгоритму. Напомним, что значение перемен- переменной х вначале равно [\/п], а затем оно увеличивается на 1 при каждом выполнении цикла. Поэтому из неравенства E.2) вы- вытекает, что если число п составное, то алгоритм дойдет до (о + 6)/2 раньше, чем до (п + 1)/2. Однако при х = (а + 6)/2 получаем 2 2 (Ь-а\2 Таким образом, достигнув этого значения, алгоритм завер- завершит работу, а его вывод будет состоять из множителей о и 6. Поэтому если п составное, то алгоритм всегда останавливает- останавливается при некотором х < (п + 1)/2, вычислив два делителя этого числа.
74 Разложение на множители Заметим, что данное составное число п можно представить в виде п = об, где 1 < о < Ь < п, возможно, несколькими раз- различными способами. Какое из разложений находит алгоритм Ферма? Поиск начинается при х — [\/п], и х увеличивается на каждом шаге. Значит, найденные алгоритмом делители о и Ъ таковы, что разность а + Ь — наименьшая из возможных. Алгоритм Ферма сообщает нам кое-что важное о систе- системе шифрования RSA. Напомним, что безопасность системы RSA зависит от сложности разложения на множители числа п, являющегося произведением двух простых. Если нам удастся разложить п, то шифр будет взломан. Алгоритм деления мето- методом проб мог бы создать иллюзию, что выбрав большие про- простые сомножители, мы могли бы добиться того, что п сложно разложить. Однако это не так. Если множители большие, но их разность мала, то п очень легко разложить на множители алгоритмом Ферма. Мы вернемся к этому вопросу в главе 12. § 3.6. Одно фундаментальное свойство простых чисел Для доказательства единственности разложения целого чи- числа в произведение простых нам понадобится следующее фун- фундаментальное свойство простых чисел. Мы доказываем это свойство в настоящем параграфе, а §3.7 и §3.8 посвящены не- некоторым его приложениям. Начнем с леммы, которая послу- послужит первым применением расширенного алгоритма Эвклида. Лемма. Пусть а,Ь и с натуральные числа, причем а и Ъ взаимно просты. Тогда: A) если произведение ас делится на Ъ, то с делится на Ь; B) если с делится на а и на Ъ, то с делится на аЬ.
§ 3.6. Одно фундаментальное свойство простых чисел 75 Докажем сначала утверждение A). По предположению, чи- числа а и b взаимно просты, т.е. НОД(а,6) = 1. Тогда результа- результатом работы расширенного алгоритма Эвклида служат такие числа а и C, что аа + ЬC = 1. Перейдем теперь к «абракадабре» доказательства. Умножив обе части последнего равенства на с, получим аас + 0Ьс = с. F.1) Ясно, что второе слагаемое в левой части делится на 6, но то же справедливо и для первого слагаемого. Действительно, оно делится на ас, а поэтому, по предположению, и на Ь. Таким образом, вся сумма в левой части делится на 6, а поскольку она равна с, то первое утверждение доказано. Выведем теперь B) из утверждения A). Раз с делится на а, то существует такое натуральное t, что с = at. Однако с делится и на 6, и поэтому из A) следует, что t делится на Ь, так как о и 6 взаимно просты. Значит, t = bk для некоторого целого к. Поэтому число c = at = a(bk) = {ab)k делится на об, что и утверждалось в п. B). Эта лемма будет использоваться очень часто, начиная с доказательства следующего свойства простых чисел, которое сформулировано в виде предложения 30 книги VII эвклидовых «Начал». Это свойство настолько важное, что мы дадим ему имя. Будем называть его фундаментальным свойством про- простых чисел. Фундаментальное свойство простых чисел. Если произведение натуральных чисел а • b делится на простое чи- число р. то либо а делится на р, либо b делится на р. Фундаментальное свойство доказывается с помощью лем- леммы. По предположению, ab делится на р. Если о делится на р,
76 Разложение на множители то доказательство завершено. Предположим, что о не делится на р. Поскольку число р простое, это означает, что НОД(о, р) = 1. Тогда из первого утверждения леммы вытекает (ab делится на р, но о и р взаимно просты), что Ь делится на р. § 3.7. Греки и иррациональности В этом параграфе мы рассматриваем одно из приложе- приложений фундаментального свойства простых чисел, доказанного в § 3.6. Мы хотим показать, что если р простое, то число у/р иррациональное. Доказательство будет первым в длинной це- цепочке доказательств от противного. Идея этого метода доказательства очень проста, и мы ча- часто пользуемся им в повседневной жизни. Вот достаточно бе- безыскусный пример. Пусть Вам нужен файл, который находит- находится на одной из двух дискет — синей или красной. К несча- несчастью, Вы не помните, на какой именно, а меток на дискетах нет. Что Вы делаете? Вставляете одну из дискет, скажем си- синюю, в дисковод, и просматриваете ее оглавление. Если нуж- нужного файла там нет, то он находится на другой дискете. Если говорить более формально, то Вы предполагаете, что нуж- нужный файл находится на синей дискете. Обнаружив, что это не так, Вы заключаете, что предположение было неверным, и что файл, следовательно, находится на красной дискете. Причина, по которой мы предполагаем, что такая страте- стратегия будет работать, состоит в том, что никакое утверждение не может быть одновременно истинным и ложным. Так, если файл находится на одной из двух дискет, и если его нет на го- голубой дискете, то он должен быть на красной. Разумеется, в повседневной жизни редко встречаются столь простые ситуа- ситуации. Например, Ваша уверенность в том, что файл находится на одной из двух дискет, может оказаться ошибочной. Или, ху- хуже того, Вы могли походя стереть нужный файл. К счастью, в математике такой беспорядок редкость.
§ 3.7. Греки и иррациональности 77 Посмотрим, как можно применить предложенную страте- стратегию к доказательству того, что число у/р иррационально. Кста- Кстати, что означает в этом контексте слово «иррациональный»? Иногда можно услышать, что иррациональное — это что-то, чего нельзя понять. Однако здесь мы имеем в виду всего лишь отрицание не рациональное, т.е. «не являющееся отношением». Согласно Оксфордскому словарю английского языка, отноше- отношение представляет собой «численное соотношение между двумя аналогичны- аналогичными величинами, измеряемое количеством повторе- повторений одной из этих величин в другой.» Это определение почти в точности повторяет определение Эв- клида из книги V «Начал». К сожалению, такое определение не позволяет узнать, что такое отношение, если Вы еще не зна- знаете, что это такое. В этом смысле оно похоже на знаменитое эвклидово определение точки: «нечто, что не имеет частей». К счастью, нам надо знать только, что иррациональное чи- число это вещественное число, не представимое в виде дроби. Итак, перед нами вопрос, к которому метод доказательства от противного вполне приложим. Мы хотим проверить, что у/р не дробь? Давайте предположим, что это не так, и при- придем к противоречию. Если нам это удастся, то мы докажем иррациональность числа у/р. В проведении доказательства следует соблюдать осторож- осторожность. Напомним, что мы предполагаем (в надежде прийти к противоречию), что у/р является дробью. Другими словами, мы предполагаем, что существуют натуральные числа о и 6 такие, что х/р=|- G.1) Более того, можно считать, что дробь записана в приведен- приведенном виде, т.е. НОД(о, Ь) = 1. В таком виде можно записать каждую дробь: для этого достаточно произвольную дробь со- сократить на наибольший общий делитель числителя и знамена-
78 Разложение на множители теля. Предположение о взаимной простоте числителя и знаме- знаменателя существенно — оно облегчает поиск противоречия. Чтобы иметь дело только с целыми числами, возведем обе части равенства G.1) в квадрат. Получим р=^, т.е. Ь2-р = а2. G.2) Значит, о2 делится на р. Согласно фундаментальному свой- свойству простых чисел, это означает, что о делится на р. Поэтому существует такое число с, что а = рс. Подставляя последнее выражение в G.2), получаем Ь2р = р2-с2. Сокращая на р, мы заключаем, что б2 должно делиться на р. Повторное использование фундаментального свойства прос- простых чисел дает, что Ъ делится на р. Значит, и о, и 6 делятся на р. Однако это невозможно, поскольку НОД(о, Ь) — 1. Тем самым, мы пришли к ожидаемому противоречию, и у/р не мо- может быть дробью. Значит, число у/р иррационально. У вопроса о существовании иррациональных чисел дол- долгая и яркая история. Согласно греческому историку Геродоту (Herodotus), геометрия зародилась в Египте, где фараон раз- раздавал подданным прямоугольные участки земли под годовую ренту. Если Нил смывал часть участка, то необходимо бы- было вызывать землемера для определения, какая часть утеряна. Плата владельца участка сокращалась пропорционально поте- потерянной площади. Египтяне интересовались только практическими измере- измерениями площади и другими подобными вычислениями, поэтому они неявно полагали все числа дробями. На передний план ир- иррациональные числа выдвинулись в Древней Греции в резуль- результате развития более теоретического подхода к геометрии. Считается, что иррациональные числа были открыты в фи- философской школе (или секте), основанной Пифагором. Разви-
§ 3.8. Единственность разложения 79 тие геометрии чрезвычайно интересовало пифагорейцев, по- поскольку они полагали, что числа (под которыми они подразу- подразумевали целые числа и дроби) лежат в основе мироздания. Мож- Можно представить себе, как ужаснулись они, поняв, что имеются отношения величин, не выражаемые никакой дробью. Гово- Говорят, что Хипас из Метапонтума (Hypasus of Metapontum) был изгнан из секты за обнародование этого секрета. Решив, что этого недостаточно, пифагорейцы даже воздвигли ему гроб- гробницу, чтобы продемонстрировать, что он для них умер! Открытие иррациональных чисел с неизбежностью вско- вскоре распространилось среди философов. Платон утверждает в диалоге «Театет», что Феодор Сиренский (Theodorus of Cirene) доказал иррациональность чисел \/3,..., л/17. К сожалению, он ничего не говорит о методе доказательства. Приведенное выше доказательство иррациональности чи- числа yfp было известно грекам. В главе 23 книги I своей «Первой аналитики» Аристотель (Aristotle) пишет, что «диагональ квадрата несоизмерима с его стороной, так как если предполагать их соизмеримость, то нечетные числа равны четным.» Это чрезвычайно сжатая форма доказательства иррацио- иррациональности числа \/2- Более развернутое доказательство содер- содержится в предложении 117 книги X эвклидовых «Начал». § 3.8. Единственность разложения Пришло время доказать, что представление натурально- натурального числа в виде, указанном в §3.1, единственно. Мы докажем единственность от противного, воспользовавшись фундамен- фундаментальным свойством простых чисел. Предположим, напротив, что существуют натуральные чи- числа, большие 2, допускающие больше одного разложения. Пусть
80 Разложение на множители п — наименьшее натуральное число, у которого есть по край- крайней мере два различных разложения. Пусть n = Pi1---P** = 9iI-..9?. (8-1) где pi < ■■■ < рк и 91 < ••■ < 9* — простые, a ei,...,efc, П,..., rs — натуральные числа. Кроме того, мы предполагаем, что эти два разложения различны. Заметим, что такое может произойти по двум причинам. Во-первых, в одном из разложе- разложений могут присутствовать простые множители, которых нет в другом. Во-вторых, даже если набор простых множителей в обоих случаях одинаков, их кратности могут быть различны- различными. К счастью, неважно, какая именно из этих возможностей реализуется в разложении (8.1). Исследуя левое разложение, мы заключаем, что п делится на р\. Но п = q[l... qrs'. Многократное применение фундамен- фундаментального свойства простых чисел показывает, что один из сомножителей в 9i' ... qrs* должен делиться на р\, а значит од- одно из чисел д, должно делиться нарх. Но простое число делится на другое простое, только если они равны. Значит р\ = q3 для некоторого j, I ^ j ^ s. Поэтому в правом разложении числа п можно заменить q3 п = Р?...# = Q? ■■•Я-3 ■■■<!? = 9? ■■•??•••#• Теперь на р\ можно сократить, поскольку оно входит в оба разложения в положительной степени. В результате получим „ei-l ек _ п г,—1 Т, V\ • • • Рк — Я\ • • ■ Pi •••4s 1 т.е. два разложения на множители некоторого нового нату- натурального числа, которое мы обозначим через т. Однако эти разложения не могут быть различными. Действительно, мы
§ 3.8. Единственность разложения 81 выбрали в качестве п наименьшее положительное число с дву- двумя различными разложениями, а т = п/р\ < п. Раз получен- полученные разложения совпадают, то j = 1, т.е. р\ = qi, а кроме того к = s. Далее, Р2 = <?2> Рз = <?3i , • • • и Рк = <?ь и кратности каждого простого числа в обоих разложениях то- тоже равны, е\ - 1 = п - 1, е2 = г2) ,... и е* = гк. Однако из этих равенств вытекает, что разложения в (8.1) так- также одинаковы, и мы пришли к противоречию. Значит, пред- представление натурального числа в виде, указанном в теореме из §3.1, единственно. Преодолев все препятствия в доказательстве единственно- единственности разложения, мы должны признать, что большинство людей просто не могут себе представить возможности наличия не- нескольких разложений. Значит вновь математики доказывают нечто, что всем остальным совершенно очевидно. Истина, однако, противоположна. Причина, по которой един- единственность разложения на простые множители для нас очевид- очевидна, состоит в том, что мы начинаем изучение целых чисел с изучения разложений, и в очень раннем возрасте. Поэтому вся выработанная нами интуиция основана на этом факте. Это все равно, что сказать, что эвклидова геометрия единствен- единственно правильная. Последнее утверждение заведомо неверно, и в наше время теории относительности и черных дыр никакому образованному человеку не придет на ум высказать что-либо подобное. Если посмотреть на историю математики последнего сто- столетия, то в ней найдется огромное количество примеров «чи- «числовых систем», элементы которых допускают разложение на неприводимые. Такое разложение, как правило, не единствен- единственно. Самый знаменитый контрпример связав с великой теоре-
82 Разложение на множители мой Ферма. Так называют сформулированное Ферма утвер- утверждение о том, что если хп + уп = zn для некоторой степени п ^ 3, то xyz = 0. На своем экземпляре диофантовой «Арифметики» Ферма пометил, что у него есть поистине замечательное доказательство этого факта, однако поля слишком узки, чтобы его привести. Очевидная стратегия доказательства основана на том, что- чтобы полностью разложить разность zn — уп. Для этого необхо- необходимо ввести комплексные числа; тогда где С = cosB7r/n) +isinB7r/n). Оказывается, что необходимое нам множество комплексных чисел устроено очень похоже на целые числа. Всякий его элемент раскладывается в произведе- произведение неприводимых, т.е. таких, которые нельзя разложить на множители. Однако для большинства значений п разложение не единственно, что и служит основным препятствием к по- получению на этом пути простого доказательства. Предполагается, что «доказательство» Ферма содержало аналогичную ошибку. Ферма мог попасться в ловушку, пола- полагая, что разложение на множители в множестве комплексных чисел, с которым он работал, единственно. Было бы неудиви- неудивительно, если бы Ферма пал жертвой такой ошибки. Как мы уже говорили в §3.1, только Гаусс сформулировал утвержде- утверждение о единственности разложения на множители в том явном виде, которым мы пользуемся и по сей день. Даже после вы- выхода «Исследований» Гаусса, Куммер (Kummer) предложил до- доказательство теоремы Ферма, похожее на изложенное выше, не понимая, в чем заключается проблема, пока один из кол- коллег не указал ему на ошибку. Не желая оставаться побежден- побежденным, Куммер разработал метод, позволяющий обходить не- неединственность разложения на множители. В результате он
Упражнения 83 смог доказать великую теорему Ферма для большого круга новых простых п. Великая теорема Ферма была в конце концов доказана Уайл- сом в 1995 г. Он следовал путем, предложенным лишь в послед- последние 10 лет, предшествовавшие его работе. Этот путь основан на теории эллиптических кривых, в которых Уайлс являет- является экспертом. Более раннюю историю теоремы Ферма можно изучить по книге [15] ([Д.12]). Хорошее элементарное введе- введение в идеи, лежащие в основе доказательства Уайлса, можно найти в [20]. Упражнения 1. Существуют ли такие натуральные числа х, у и z, что 21 • З4 • 26у = 392? 2. Пусть к — натуральное число, к > 1. Покажите, что все числа в последовательности k\ + 2,kl+3,...,k\ + k составные. Используйте этот факт для доказательства суще- существования отрезков последовательных составных чисел произ- произвольной длины. 3- С помощью алгоритма Ферма найдите делители следу- следующих чисел: 175557, 455621 и 731021. 4. Какие из приводимых ниже утверждений являются вер- верными: A) Число ч/б иррациональное. B) Сумма иррационального числа и дроби всегда ир- иррациональна. C) Сумма двух иррациональных чисел всегда ирраци- иррациональна. D) Число \/2 + \/3 рациональное.
84 Разложение на множители 5. Покажите, что если число п составное, то число п раз тоже составное. Такие числа называются повторяющимися единицами. Подсказка: если п делится на к, то R(n) делится на Щк). 6. Пусть число п > 0 составное и р — его наименьший про- простой делитель. Найдите все возможные значения п, для кото- которых A) р > у/щ B) НОД(бп + 7, Зп + 2) делится на р - 4. 7. Наименьшее общее кратное НОК(а, 6) двух натураль- натуральных чисел а и 6 это наименьшее положительное число, которое делится как на а, так и на 6. Положим где pi < Р2 < ••• < Pk, а показатели е\,...,ejt и п,...,т-fc нео- неотрицательны. Заметим, что мы не предполагаем, что в раз- разложении обоих чисел на простые множители участвуют оди- одинаковые простые числа; если, например, а делится на pi, a 6 нет, то мы полагаем п = 0. Покажите, что единственными простыми делителями чисел НОД(а, 6) и НОК(а, 6) являются Рь • • • iPfc и найдите их кратности в соответствующих разло- разложениях. 8. Натуральное число п называется совершенным, если сум- сумма всех его делителей (включая 1 и само п) равна 2п. Напри- Например, числа б и 28 совершенные. Пусть s — такое натуральное число, что 2S+1 — 1 простое. A) Покажите, что делители числа 25B5+1 — 1) образуют две геометрические прогрессии со знаменателем 2,
Упражнения 85 первая из которых начинается с 1, а вторая — со знаменателем 2S+1 — 1. B) Вычислите сумму этих делителей и покажите, что число 2SB5+1 — 1) совершенное. Выше сформулировано предложение 36 книги IX эвклидо- эвклидовых «Начал». Такие совершенные числа иногда называют эв- эвклидовыми. Цель следующих двух упражнений состоит в доказатель- доказательстве того, что все четные совершенные числа эвклидовы, т.е. имеют вид 25BS+1 — 1), где 25+1 — 1 простое число. Это утвер- утверждение было доказано Эйлером, однако сама статья была опу- опубликована в 1849 году, через много лет после его смерти. При- Приводимое ниже доказательство взято из [14]. Интересно отме- отметить, что все известные совершенные числа просты, а значит представимы в виде, известном уже Эвклиду. Было доказано, что если нечетные совершенные числа существуют, то каждое из них больше, чем 10300, и имеет не менее восьми простых де- делителей. 9. Обозначим через S(n) сумму всех делителей натураль- натурального числа п, включая 1 и п. A) Покажите, что число г простое, если и только если ЭД=г+1. B) Покажите, что число п совершенное, если и только если S(n) = 2п. C) Пусть &i и &2 — взаимно простые натуральные чи- числа. Покажите, что &i&2 делится на d, если и толь- только если d представимо в виде d = d\da, где d\ = Д(,1),2 Д(,2) D) С помощью утверждения C) покажите, что если &i и &2 взаимно просты, то 5F162) = 5FMF) 10. Всякое четное число п можно записать в виде п = 25£, где s ^ 1, а число t нечетное. Предположим, что п совершен- совершенное.
86 Разложение на множители A) Подставьте п = 2st в формулу S(n) — 2п и, вос- воспользовавшись утверждением D) упражнения 9, по- покажите, что S(t) должно делиться на 2s+l. B) Выведите из A), что S(t) — 2s+lq для некоторого натурального q. Покажите, что t = Bs+l — l)q. C) Мы хотим доказать от противного, что q = 1. Пред- Предположим, что q > 1. Тогда из B) следует, что у q по крайней мере три различных делителя, а именно 1,д и i Поэтому S(t) ^ 1 + q + t. Покажите, что S(t) = 2a+1q = t + q и получите искомое противоре- противоречие. D) Из C) вытекает, что q = 1. Подставив это значе- значение в формулу для t, мы получаем t = 25+1 — 1 и S{t) = 2S+1. Значит, S{t) = t + 1 и из утвержде- утверждения A) упражнения 9 вытекает, что t простое чи- число. Окончательно мы заключаем, что п = 2SBS+1 — 1), причем второй сомножитель простой. 11. Обозначим через d(n) число положительных делителей натурального числа п. Число п называется сильно составным, если d(m) < d(n) для всех т < п. Напишите программу, ко- которая по заданному натуральному числу г выдает все сильно составные числа, меньшие г. С помощью Вашей программы составьте список всех сильно составных чисел, меньших 5000. Что можно сказать о простых делителях этих чисел, рассма- рассматривая разложения элементов списка на множители? Сильно составные числа были введены и изучены знаменитым индий- индийским математиком Шринивасои Рамануджаном (Srinivasa Ra- manujan), см. [40]. 12. Напишите программу, реализующую алгоритм Ферма разложения на множители. Входом программы должно слу- служить любое положительное число, меньшее 232, а выходом -— его разложение в произведение двух множителей или сообще-
Упражнения 87 ние о том, что оно простое. Не забудьте, что с четными числа- числами алгоритм Ферма работает неправильно, поэтому входное число нужно сначала проверить на нечетность. Это упраж- упражнение начинает серию, которая заканчивается упражнением 8 главы 12.
Глава 4. Простые числа В первых двух главах мы изучали некоторые свойства про- простых чисел, без которых много не докажешь, и два алгорит- алгоритма, без которых много не вычислишь. Содержание этой главы более явно связано с нашей конечной целью — USA-крипто- USA-криптосистемой. В самом деле, для уверенности в безопасности реа- реализации RSA мы должны уметь подбирать большие простые числа: по два для каждого пользователя. В настоящей гла- главе мы приступаем к решению этой задачи. Сначала рассмо- рассмотрим простые числа, получающиеся из полиномиальных, экс- экспоненциальных и праймориальных формул. Важным следстви- следствием изучения праимориальнои формулы будет доказательство бесконечности множества простых чисел. Глава заканчивает- заканчивается обсуждением решета Эратосфена — старейшего из извест- известных методов нахождения простых чисел и прародителя всех современных решет. § 4.1. Полиномиальная формула Представление большинства людей о «формуле простых чи- чисел» можно было бы выразить в следующем определении. Функ- Функция / : N —¥ N называется формулой простых чисел, если
§ 4.1. Полиномиальная формула 89 f(m) — простое число для каждого т € Z. Как мы увидим, это определение слишком амбициозно. Вместо «формулы простых чисел» мы будем искать функции, среди значений которых ча- часто встречаются простые числа. Поскольку многочлен — про- простейшая из возможных функций, стоит начать с вопроса: су- существует ли полиномиальная формула простых чисел? Как следует из определения, данного выше, многочлен f(x) = апхп + Оп-хж"" Н h ахх + ао с целыми коэффициентами an, on_i, ..., сц, Оо является фор- формулой простых чисел, если число f(m) простое для каждого положительного целого т. Поэкспериментируем с многочле- многочленом f(x) = х2 + 1. Начнем с вычисления f(x) для нескольких натуральных значений переменной х. Результат представлен в следующей таблице. X 1 2 3 4 5 6 7 8 9 10 2 5 10 17 26 37 50 65 82 101 Простое? да да нет да нет да нет нет нет да Заметим, что если х нечетно, то f(x) четно. Таким обра- образом, f(x) — всегда четное, а значит и составное число для не- нечетных значений х (за исключением х = 1, так как /A) = 2). Значит, если х > 1 и f(x) — простое, то х обязательно чет- четное. Следовательно, если бы числа f(x) были простыми при каждом четном ж, то многочлен f[2x) был бы формулой про- простых чисел. К сожалению, это не так; например, /(8) =65 —
90 Простые числа составное число. Итак, многочлен f(x) = х2 + 1 не дает фор- формулу простых чисел в смысле данного выше определения. Ко- Конечно, это только один пример, и мы могли бы надеяться, что нам не повезло с выбором многочлена. Но следующий резуль- результат показывает, что дело не в этом. Теорема. Для данного многочлена f(x) существует бес- бесконечно много положительных целых чисел т, при которых число f[m) составное. Мы докажем зту теорему только для многочленов степе- степени 2. Общий случай доказывается аналогично, только форму- формулы будут более громоздкими, и усилия, затрачиваемые для их понимания, могут легко затмить ключевые идеи. Пусть f(x) = ах2 + Ьх + с — многочлен с целыми коэффи- коэффициентами а, бис. Мы можем предполагать, что о > 0. Это означает, что f(x) положителен для достаточно больших зна- значений переменной х. Если f(x) составное число для каждого натурального х, то доказывать нечего. Заметим, что такое на самом деле случается; например, если f(x) = Ах. Таким обра- образом, мы можем предполагать: существует такое натуральное число т, что р = f(m) — простое. Пусть h — произвольное натуральное число. Вычислим зна- значение f(m + hp). Возникает резонный вопрос: откуда появи- появилось т + ftp? Наилучший ответ на него заключен в выкладках, приведенных ниже. Мы хотим найти /(m + ftp) = а(т + hpJ + b(m + ftp) + с. Раскрывая квадрат и собирая вместе члены, содержащие р, получаем f(m + hp) = {am2 + bm + c) +pBamh + aph2 + 6ft). Заметим, что выражение в первой скобке равно /(т) = р, так что f(m + hp) =p(l +2amh + aph2 + bh). A.1)
§ 4.1. Полиномиальная формула 91 Формула A.1) склоняет нас к предположению о разложимо- разложимости числа f(m + hp). Действительно, оно равно произведению р на натуральное число, что означает окончание доказатель- доказательства. К сожалению, в этом рассуждении есть ошибка. Число f{m+hp) будет простым только в том случае, если выражение в скобках в правой части формулы A.1) не равно 1. Поэтому нам нужно найти такое значение h, при котором 1 + 2amh + aph2 + bh>l. Последнее неравенство эквивалентно 2amh + aph2 + bh>0. Поскольку число h положительно (по предположению), требу- требуемое неравенство выполнено только если , —& ~ 2am 2am + aph + b > 0, т.е. h > . ар Заметим, что —6—2am может быть положительным числом в том случае, если b отрицательно и меньше, чем — 2am. Что же мы доказали? Мы показали, что если f(x) = ах2 + +Ьх+с — многочлен с целыми коэффициентами и положитель- положительным а, и число /(т) = р — простое, то f(m + hp) является составным для всех h > (—6 — 2ат)/ар. В частности, найдет- найдется бесконечно много натуральных значений х, при которых f(x) — составное число. Как мы уже отмечали, похожее доказательство работает и для многочленов произвольной фиксированной степени. Ко- Конечно, вычисление значения f(m + ph) не такое компактное, но главная трудность связана с определением нижней грани- границы для h. Поскольку у нас был квадратный многочлен, эта граница легко получалась из линейного неравенства. В общей ситуации, когда мы работаем с многочленом степени п, ниж- нижняя граница для h определяется из неравенства, содержащего
92 Простые числа многочлен степени п — 1. Эта трудность проиллюстрирова- проиллюстрирована в упражнении 1, где рассматривается случай кубического многочлена. Если же степень многочлена больше 3, то про- простой формулы, выражающей нижнюю границу для Л, нет. В такой ситуации мы были бы рады показать, что нижняя гра- граница в принципе существует, даже если не сможем выписать для нее точную формулу. Доказательство существования ниж- нижней границы требует применения элементов математического анализа, и мы не будем его приводить. Доказательство этой теоремы можно найти в [41] ([Д. 14]). Доказанная теорема означает, что ответ на вопрос, сфор- сформулированный в начале параграфа, отрицателен. Однако мы рассматривали только многочлены от одной переменной. Не- Неожиданным образом существуют многочлены от нескольких переменных, все положительные значения которых — простые числа. Проблема в том, что эти многочлены во многом неопре- неопределенны, так что их использование для нахождения простых чисел не очень практично. Примеры смотри в [41] ([Д. 14]). § 4.2. Экспоненциальные формулы: числа Мерсенна Есть две экспоненциальные формулы огромной историче- исторической важности. Обе изучались математиками XVII и XVIII веков, в особенности Ферма и Эйлером. Вот эти формулы: М{п) = 2П - 1 и F(n) = 22" + 1, где п — натуральное. Числа из первой формулы называются числами Мерсенна, а из второй — числами Ферма. Вопрос о том, при каких значениях п числа Мерсенна про- просты, восходит к математикам античной Греции. В пифаго- пифагорейском мистицизме число называлось совершенным, если оно
§ 4.2. Экспоненциальные формулы: числа Мерсенна 93 равняется полусумме своих положительных делителей. Напри- Например, делители числа б — это 1, 2, 3 и 6. Складывая их, полу- получаем: 1+2 + 3 + 6= 12 = 2-6. Следовательно, 6 — совершенное число. Конечно, никакое про- простое число не будет совершенным. Действительно, делители простого числар — это 1ир, и 1+р< 2р, поскольку р > 1. Эвклид знал, что число 2n-1 Bn — 1) совершенно, если 2П — 1 простое. Нетрудно показать, что все четные совершенные чи- числа имеют такой вид, но доказан этот факт был только Эй- Эйлером в восемнадцатом веке. Доказательство упомянутых ре- результатов можно найти в упражнениях 8, 9 и 10 главы 3. Фор- Формула Эвклида сводит задачу о поиске четных совершенных чисел к нахождению простых чисел Мерсенна. Задача о нахождении совершенных чисел, имеющая сво- своим истоком туманный мистицизм пифагорейцев, может по- показаться крайне странной некоторым, живущим в конце два- двадцатого века. Однако, факт остается фактом: несмотря на то, что проблема стоит около 2500 лет, у нее все еще нет удовле- удовлетворительного решения. Например, неизвестно, обязано ли со- совершенное число быть четным, хотя к настоящему времени не найдено ни одного нечетного. Конечно, возраст этой пробле- проблемы бросает труднопреодолимый вызов всем, кто любит числа. Более того, ее сложность может означать, что она относится к глубочайшим свойствам целых чисел. Это делает ее даже еще более важной с точки зрения математиков. Как мы упоминали во введении, Марэн Мерсенн был свя- священником и математиком-любителем семнадцатого века. Чи- Числа вида 2П — 1 обязаны своим именем утверждению Мерсенна о том, что они просты, в случае п = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, и 257, и являются составными для всех остальных 44 положительных простых п, меньших 257.
94 Простые числа Первое важное замечание: Мерсенн рассматривал значения функции 2П — 1 только при простых п. Действительно, если п — составное, то такое же и М(п). Предположим, что п = rs, 1 < г и s < п, тогда М(п) = 2п -1 = 2rs - 1 = BГ - l)BrE-J) + 2ГE) + • • • +2Г +1). Следовательно, если г делит п, то М(г) делит М(п). Второй важный момент заключается в том, что обратное неверно. Иначе говоря, если п — простое, то М(п) не обязано быть простым. Мы видим из списка Мерсенна, что МA1) должно быть составным. Это легко проверить: МA1) = 2047 = 23 • 89. Как часто бывало в то время, Мерсенн не привел доказа- доказательства своего утверждения, что дало повод для сомнений в его истинности и оставило широкое поле деятельности для математиков. В поисках простых чисел Мерсенна принял уча- участие и Эйлер. В 1732 году он нашел два «новых пр'остых» чи- числа: МD1) и МD7), отсутствовавших в списке Мерсенна. Поз- Позже выяснилось, что в этом случае Эйлер был не прав. Первую ошибку в списке Мерсенна нашли Первузэн (Pervusin) и Зил- хоф (Seelhov) в 1886. Они обнаружили, что число МF1) про- простое, хотя его и нет в списке. Другие ошибки были найдены в последующие годы. Сейчас известно, что кроме МF1), в спис- списке пропущены простые числа М(89) и МA07), и присутствуют составные числа МF7) и МB57). При доказательстве простоты чисел Мерсенна, Ферма ис- использовал метод разложения на множители, который будет описан в § 10.1. В наше время используется гораздо более эф- эффективный тест Люка-Лемера, изучаемый в § 10.4. С помо- помощью этого теста в 1998 году было показано, что число Мер- Мерсенна МC 021377) просто. Оно состоит из 1819 050 знаков и является наибольшим из простых чисел, известных к моменту издания этой книги.
§ 4.3. Экспоненциальные формулы: числа Ферма 95 § 4.3. Экспоненциальные формулы: числа Ферма История чисел Ферма очень схожа с историей чисел Мер- Мерсенна. Ферма знал, что если 2т +1 простое, то т должно быть степенью двойки. Поэтому, интересуясь простыми, необходи- необходимо смотреть только на числа вида 22" + 1. В письме, адре- адресованном шевалье Френиклю (Prenicle), другому математику- любителю, Ферма выписал эти числа для п = 0, 1, ..., 6: 3; 5; 17; 257; 65537; 4294967297 и 184467440737095516J7. Затем он предположил, что все числа вида 22" +1 простые. Как ни странно, Ферма, кажется, не пытался разлагать на множители эти числа методом, аналогичным использованному им для разложения чисел Мерсенна. Если бы он применил этот метод, то увидел бы, что число ^E) составное. Необходимую проверку Эйлер сделал столетие спустя. Мы будем изучать его метод в § 10.2. Интересно также, что Френикль не обнаружил ошибки Фер- Ферма. В конце концов, он был слишком занят попытками раз- разложения чисел Мерсенна на множители. Френикль не мечтал затмить Ферма-математика, но тон его корреспонденции на- наводит на мысль, что он очень хотел найти ошибку в работе Ферма. Тем не менее, кажется, он был согласен с Ферма в справедливости его гипотезы. В отличие от чисел Мерсенна, о которых известно, что они являются богатым источником больших простых чисел, среди чисел Ферма простых известно очень мало. Фактически, все известные простые числа Ферма — это ^@),..., FD) — спи- список, неизменный со времен Ферма. Конечно, вычислять числа Ферма при «больших» значениях п очень трудно. В конце кон- концов, формула, описывающая эти числа — двойная экспонента, т.е. экспонента от экспоненты.
96 Простые числа В двух предыдущих параграфах мы немного познакоми- познакомились с историей самых известных чисел, описываемых экс- экспоненциальными формулами. Доказательства упомянутых ре- результатов мы оставим до главы 10. В настоящий момент нам придется довольствоваться знанием того, что числа Мерсен- Мерсенна — неисчерпаемый источник очень больших простых чисел. Следует указать, что предложенный Ферма метод разложе- разложения чисел Мерсенна весьма прост для объяснения и нетруден при доказательстве. Но есть более элементарное рассуждение, которое нашел бы и сам Ферма; оно требует только несколь- нескольких удачных отождествлений (см. [8]). Несмотря на это, мы откладываем изучение метода Ферма до девятой главы. К то- тому моменту мы будем владеть основными понятиями и тео- теоремами теории групп, которые позволят нам дать более ко- короткое и прозрачное обоснование метода Ферма. В качестве бесплатного приложения мы сможем использовать те же са- самые идеи в ряде других случаев, один из которых — метод Эйлера определения делителей чисел Ферма. Один из фундаментальных принципов развития матема- математики заключается в том, что важные частные задачи нередко решаются только после развития общих методов и абстракт- абстрактных теорий, выявляющих связи и аналогии между результата- результатами, которые раньше считались имеющими мало общего. Эти связи, в свою очередь, часто указывают на неожиданные при- приложения новых методов. § 4.4. Праймориальная формула Напомним, что факториалом натурального числа п назы- называется произведение всех положительных целых чисел, не пре- превосходящих п. Аналогично мы определяем праймориал р* про- простого р > 0 как произведение всех простых чисел, меньших или равных р. Например, 2* = 2 и 5* = 2 • 3 • 5 = 30. Заметим,
§ 4.4. Праймориалъная формула 97 что если q — следующее после р простое число, то 4к А q = р q. Мы хотим рассмотреть числа вида зачем, посмотрите на таблицу: + 1. Чтобы понять, р 2 3 5 7 11 р* 2 6 30 210 2310 р# + 1 3 7 31 211 2311 Все числа в правом столбце таблицы — простые! Может ли это быть просто совпадением? Если этот вопрос вселяет в вас надежду на то, что все числа вида р* +1 простые, вам бы следовало попытаться заполнить следующую строку таблицы. На самом деле, 13# + 1 = 30031 = 59- 509 является составным числом. Однако, хотя р* +1 не всегда простое, мы можем показать, что оно не имеет делителей, меньших или равных р. Восполь- Воспользуемся методом «от противного». Предположим, что q ^ р — простой делитель числа р# +1. Поскольку р* — произведение всех простых чисел вплоть до р, q должно также делить р#. Следовательно, q делит разность (р# + 1)-р# = 1. Значит, q = 1, что противоречит его простоте. В итоге мы по- получаем: наименьший делитель числа р* +1 должен быть боль- больше р. Это наблюдение может навести на мысль о следующем ал- алгоритме получения больших простых чисел. Пусть мы знаем
98 Простые числа все простые числа вплоть до р. Вычисляем р# 4- 1. Если оно простое, то все сделано. Если нет, то найдем его наименьший простой делитель; он должен быть больше, чем р. В любом случае, мы нашли простое число, большее р. Описанный подход плох по нескольким причинам. Наибо- Наиболее очевидная из них — необходимость разложения на простые множители числа р* + 1. Даже для сравнительно небольших значений р праймориал р* огромен и разложение его на мно- множители весьма проблематично. С другой стороны, если повезет, число р# + 1 может ока- оказаться простым. А как мы увидим позже, существуют впол- вполне приемлемые способы проверки простоты больших чисел, которые не используют разложения на множители. Простое число, представимое в такой форме, называется праимориаль- праимориально простым. Конечно, остается наивный подход к проверке простоты, заключающийся в систематических попытках по- подобрать подходящий делитель числа. Как мы видели в §3.3, этот алгоритм весьма неэффективен. Специальный алгоритм тестирования простоты чисел вида р* + 1 будет изучаться в главе 11. Несмотря на то, что он очень удобен, пока найде- найдено только 16 праимориально простых, наибольшее из которых соответствует р = 24027 и насчитывает 10387 знаков. Итак, праймориальная формула не дает очень уж удобного пути к отысканию больших простых чисел; к счастью, на ней свет клином не сошелся. § 4.5. Бесконечность множества простых чисел Истинная причина, по которой мы так долго и детально разбирались с праймориальной формулой, состоит в том, что она дает нам самое быстрое доказательство следующего фун- фундаментального результата.
§ 4.5- Бесконечность множества простых чисел 99 Теорема. Простых чисел бесконечно много. Доказательство, которое мы здесь приводим, можно найти в «Элементах» Эвклида как предложение 20 книги IX. Доказы- Доказываем «от противного». Предположим, множество простых чи- чисел конечно. Это означает, что существует наибольшее про- простое число; скажем, р. Другими словами, мы предполагаем, что все числа, большие р, — составные. Однако, как мы ви- видели в предыдущем параграфе, число р* -(-1 не может иметь простых делителей меньших или равных р. Из предположения и последнего утверждения вытекает, что у р* +1 нет простых делителей, т.е. оно само является простым числом. А посколь- поскольку р* + 1 > р, мы получаем противоречие с предположением: р — наибольшее простое число. Итак, простых чисел должно существовать бесконечно много. Было найдено много других доказательств бесконечности ряда простых чисел. Доказательство Эйлера A737 года) но- носит особый характер. Оно оказалось тем семенем, из которого позже выросли многие достижения, поэтому мы приведем его здесь практически полностью. Подобно доказательству Эв- Эвклида, оно тоже идет «от противного». Итак, предположим, что существует только конечное число простых чисел, и пусть р — наибольшее из них. Рассмотрим произведение множите- множителей по одному для каждого простого числа. Естественно, это про- произведение равно некоторому положительному вещественному числу. Более того, аккуратно перемножая члены произведе- произведения, можно показать, что где теперь у нас есть свое слагаемое для каждого натураль- натурального числа. Это равенство мы докажем чуть позже, а сейчас
100 Простые числа попытаемся привести его к противоречию. Хотя число сла- слагаемых в выражении E.2) бесконечно, его сумма еще могла бы оказаться конечным числом; например, бесконечная сумма 1 +1/2 +1/22 +1/23 +1/24 + • • •, как сумма бесконечной геоме- геометрической прогрессии со знаменателем 1/2, равна г_\/2 = 2. Но нетрудно увидеть, что сумма, соответствующая Р, не мо- может быть равной ни одному вещественному числу. Для начала заметим, что 1 5 + 1 2"-1 +1 Следовательно, 1 бН т 1 зн 1 ~ . . 1 1 1 h4 1 h8 1 2» ^ * ■ >> л ^ 4 • 1 4 1 8 > 9n-1 1 2n 1 2 1 2 1 2 „,11111 1 In Р>1 + 2 + 3 + 4 + 5 + 6 + - + 2^"-2 = 2 для любого данного натурального п. Таким образом, Р боль- больше любого наперед заданного числа, поэтому оно не может быть каким-то вещественным числом. Полученное противоре- противоречие доказывает, что простых чисел бесконечно много. Теперь вернемся к доказательству равенства E.2). Факти- Фактически, нам нужно показать, что произведение E.1) совпадает с бесконечной суммой E.2). Напомним, что дробь j^- (при q € @; 1)) можно интерпретировать как сумму бесконечной геометрической прогрессии со знаменателем q: - = 1 + q + q2 + q3 + q4 + • • • + <f + • • • . 1-q Таким образом, равенство E.1) можно переписать в виде: р = A + k + * +•••)• (i + i + *+•■•)•■
§ 4.5. Бесконечность множества простых чисел 101 Раскроем скобки в этом произведении. Такую операцию мож- можно сделать двумя способами. Один из них заключается в после- последовательном перемножении скобок: сначала раскрываем про- произведение первых двух скобок, затем полученный результат умножаем на третью, и т.д. Это привычный способ, но длин- длинный и малоэффективный. Действительно, мы не знаем точное количество перемножаемых скобок, да и каждая скобка пред- представляет собой бесконечную сумму. Другой способ, менее привычный, но более грамотный, осно- основан на простом наблюдении: если бы у нас хватило терпения и сил раскрыть скобки первым методом, то мы получили бы бесконечную сумму произведений фгфгфз '" фг (гг ^ 0), п0 одному сомножителю из каждой скобки (значение показателя г, = 0 говорит о том, что из i-ой скобки в качестве сомно- сомножителя мы берем 1). Мы не будем объяснять это наблюдение более подробно, поскольку такого сорта утверждения легче осознать самостоятельно, нежели понять их доказательство. Итак, число Р из равенства E.1) представляет собой бес- бесконечную сумму слагаемых вида рг,' П>0, г2>0,...,г^0. E.3) Упорядочим эти слагаемые по убыванию. Самым большим будет член 2озО5го...рО = ! затем идет 2i3050...p0 = 1/2, потом = !/3, после него — 2гзО5О...ро = 1/4, и т.д. Как види- видите, мы получили начало бесконечной суммы E.2). Нам оста- осталось показать, что число Р на самом деле совпадает с этой суммой. Для этого необходимо проверить две вещи: (а) для любого натурального числа п среди дробей E.3) найдется такая, что 1. 1 п (б) каждая дробь вида i встречается в бесконечной сумме, представляющей Р, только один раз.
102 Простые числа Начнем, как ни странно, с проверки второго утверждения (оно несколько проще). Предположим, что нашлись две разные дроби, равные ^, т.е. 1 1 1 п 2Г» 3Г2 5гз • • • рТ» 2*i 3*2 5*з ••• рк>' Поскольку числители всех этих дробей равны 1, мы получаем равенство знаменателей: п = 2Г13Г25Гз • • -рг> = 2к1Зк25кз ■ • -ркз. Как первое произведение в этом равенстве, так и второе, цели- целиком состоит из простых чисел, т.е. мы двумя разными спосо- способами разложили натуральное число п на простые сомножите- сомножители, что противоречит основной теореме арифметики. Значит, г\ = к\, Г2 = к2, . ■ ■, rs = ks, т.е. дроби совпадали изначально. Таким образом, утверждение (б) проверено. Перейдем к утверждению (а). По основной теореме ариф- арифметики любое натуральное число п представляется в виде про- произведения простых сомножителей: п = pf1 ■ р%2 • • -р^1- С дру- другой стороны, знаменатель каждой из дробей E.3) — это про- произведение степеней всех простых чисел: 2ri •••pr', причем их показателями могут быть любые неотрицательные целые чи- числа. Таким образом, чтобы приравнять дробь вида E.3) числу £, достаточно выбрать подходящие показатели Г{. «Ага! — скажете Вы, — Вот я и поймал педанта-лектора! Как же могут быть равными дроби если в первой из них присутствуют только некоторые про- простые числа, в то время как во второй — все?» Не спешите с выводами. Напомню, что показатели г, могут обращаться в нуль. Вот мы и возьмем нулевые показатели для всех тех про- простых чисел, которых нет в знаменателе левой дроби. Итак,
§ 4.5. Бесконечность множества простых чисел 103 утверждение (а) также проверено. То есть мы доказали, что произведение E.1) и бесконечная сумма E.2) равны одному и тому же числу Р. Все было бы замечательно, если бы не мелкое жульниче- жульничество, которое было допущено в этом рассуждении. Оно за- заключается в приглашении: «упорядочим эти слагаемые по убы- убыванию». Дело в том, что оно относится к бесконечной сумме, неявно подразумевая, что эта сумма не зависит от порядка слагаемых. К сожалению, в общем виде такое утверждение просто неверно. Однако, если, как и в нашем случае, сумми- суммируются неотрицательные вещественные числа, то результат суммирования даже бесконечного числа слагаемых не зависит от порядка. Доказательство этого факта выходит за рамки на- нашего учебника. Заинтересованный читатель может прочесть об этом в [Д.6]. Более того, там же он может познакомиться с удивительной теоремой Римана, которая утверждает, что в некоторых бесконечных суммах можно так поменять порядок слагаемых, что в результате получится любое, наперед задан- заданное число. Вот теперь мы полностью привели доказательство Эйлера бесконечности простых чисел. Конечно, если бы множество простых чисел было ограни- ограничено, жизнь была бы проще, но мир стал бы скучнее. Тот факт, что простых чисел бесконечно много, ставит много интерес- интересных проблем. Например, что можно сказать об их распреде- распределении? Растет или убывает «плотность» простых чисел, когда мы переходим ко все большим и большим числам? Существу- Существует ли возможность измерить эту «плотность»? Наилучший спо- способ точно сформулировать проблему о распределении простых чисел состоит в использовании тг-функции. Для вещественно- вещественного положительного числа х обозначим через тг(ж) количество простых чисел, не превосходящих х. Хорошая оценка функции 7г(ж) — важная задача теории чисел. Упомяните при математиках о распределении простых чи- чисел, и вы тут же услышите имя Римана. Идеи, рожденные до-
104 Простые числа касательством Эйлера бесконечности ряда простых чисел, лег- легли в основу работы Б. Римана, ставшей фундаментальным трудом, посвященным функции тг(ж) и родственным вопросам. Эта статья, опубликованная в 1895 году, содержит много ин- интересных очаровательных результатов, часть которых приве- приведена без доказательства. К сожалению, Риман умер от тубер- туберкулеза семь лет спустя, не закончив детальную проработку своих доказательств. Эту работу взвалило на свои плечи не- несколько математиков, в первую очередь Адамар (Hadamard). Одним из результатов усилий Адамара по заполнению про- пробелов, оставленных Риманом, стало доказательство знамени- знаменитой теоремы о простых числах, которая говорит, что .. тг(жIпж hm —— = 1, X—ЮО X где In ж — логарифм по основанию е (т.е. натуральный ло- логарифм). Этот результат даже старше работы Римана; его сформулировал Гаусс в качестве гипотезы. Доказан же он был в 1896 году независимо друг от друга Адамаром и де ля Валле- Пуссеном (de la Valle-Poussin). Нестрого говоря, теорема о простых числах утверждает, что для очень больших значений ж число тг(ж) приблизительно равно ж/1п(ж). Но аппроксимация будет хорошей только если ж поистине велико. Например, если ж = 1016, то разность тг(ж) - [г^-1 = 7804289 844393 Llnxl будет величиной порядка 1013. Поскольку в этом случае ж/In ж имеет порядок 1014, то ошибка действительно значительна. Есть много других простых функций, дающих неплохую ап- аппроксимацию функции тг(ж) при больших ж. Одна из них изуча- изучается экспериментальным образом в упражнении 11. Подробное обсуждение распределения простых чисел можно найти в [23] и [24] ([Д.10]). История теоремы о простых числах содержит- содержится в [7].
§ 4.6- Решето Эратосфена 105 § 4.6. Решето Эратосфена Решето Эратосфена — это старейший из известных спо- способов выписывания простых чисел. В отличие от методов, обсуждавшихся в предыдущих параграфах, он не использует никакой специальной функции. Эратосфен (Erathostenes) был греческим математиком, родившимся около 284 года до н.э. Он владел многими отраслями знаний, однако современники не считали его выдающимся специалистом ни в одной из них. Они прозвали его «Бета» (вторая буква греческого алфавита) и «Пентатлосом»1. Вот уже 2300 лет мы пользуемся его рабо- работами, а полученные им прозвища являются лишним подтвер- подтверждением величия древнегреческой математики. В своей «Арифметике», опубликованной около 100 года н.э., Никомах из Герасы (Nicomachus of Gerasa) вводит решето Эра- Эратосфена следующим образом: «Метод для получения этих [простых чисел] назы- называется по Эратосфену решетом, так как мы берем все нечетные числа, смешанные беспорядочно вме- вместе, и выбрасывая из них, как неким инструментом, или решетом, мы отделяем в первую очередь нераз- неразложимые, а во вторую составные посредством их самих.» Для дальнейшего знакомства с высказыванием Никомаха о ре- решете смотри [47]. Итак, решето получило свое имя потому, что когда оно применяется к списку натуральных чисел, составные числа просеиваются, а простые задерживаются. Посмотрим, как оно работает. Прежде всего, цель решета — определить все положитель- положительные простые числа, меньшие некоторой верхней границы п > 0, 'Пентатлос (Pentatlos) в переводе с греческого языка означает «пя- «пятый». — Прим. перев.
106 Простые числа которую мы предполагаем целой. Чтобы использовать метод решета, как это делал Эратосфен (имея только карандаш и бумагу), мы поступаем следующим образом. Сначала выписы- выписываем все нечетные целые между 3 и п. Причина, по которой мы не трогаем четные числа, заключается в том, что, кроме 2, среди них нет простых чисел. Теперь мы начинаем просеивать список. Первое число в нем 3. Начиная со следующего числа в списке (это 5), мы вы- вычеркиваем из него каждое третье число. Проделав это до кон- конца, мы вычеркнем все числа из списка, кратные 3 и большие самой тройки. Теперь выберем наименьшее число из списка, превосходя- превосходящее 3, которое еще не было вычеркнуто. Таким будет 5, а сле- следующее за ним число — 7. Вычеркиваем каждое пятое число из нашего списка, начиная с 7. Таким образом, все числа, крат- кратные 5, будут вычеркнуты. Продолжаем эту процедуру, пока не дойдем до п. Заметим, что если мы собираемся вычеркивать каждое р-ое число, то всегда надо начинать отсчет с числа р + 2, даже когда это число было вычеркнуто на предыдущих шагах. Например, для п = 41 список нечетных чисел выглядит так: 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 Вычеркнув каждое третье число начиная с 5, мы получим 3 5 7 $ 11 13 V5 17 19 24 23 25 У1 29 31 33 35 37 39 41 Теперь мы вычеркиваем каждое пятое число, начиная с 7, что дает 3 5 7 $ 11 13 V5 17 19 24 23 25 27 29 31 33 36 37 39 41 Мы должны бы теперь вычеркнуть каждое седьмое число, на- начиная с 9. Но если мы это сделаем, то никакие новые числа
§ 4.6. Решето Эратосфена 107 не отсеются. Далее нам нужно бы вычеркнуть каждое один- одиннадцатое число, начиная с 13, но это опять не даст никакого эффекта. На самом деле, ни одно из чисел, оставшихся в списке после вычеркивания каждого пятого, не будет позже вычерк- вычеркнуто ни на каком этапе просеивания. Итак, положительные нечетные простые числа, не превосходящие 41, это 3 5 7 11 13 17 19 23 29 31 37 41. В разобранном примере есть пара важных обстоятельств, которые нужно взять на заметку. Во-первых, хотя нам сле- следовало повторять процесс вычеркивания вплоть до гранично- граничного числа п D1 в нашем примере), мы избавились от всех со- составных чисел к тому моменту, когда отсеяли кратные 5, и все остальные просеивания оказались излишними. Во-вторых, некоторые числа вычеркивались больше, чем один раз. Такое произошло, например, с 15. Первый раз оно было вычеркнуто, когда мы отсеивали кратные 3. Но 15 также делится на 5, по- поэтому оно было вычеркнуто снова при отсеивании кратных 5. Посмотрим, как можно увеличить эффективность решета в свете этих двух замечаний. Начнем со второго из них, т.е. посмотрим, можем ли мы так все организовать, чтобы каждое число вычеркивалось только один раз? К сожалению, ответ на этот вопрос отрицателен: нет хорошего способа добиться это- этого. Хотя кое-что в указанном направлении сделать все-таки можно. Предположим, что мы отсеиваем числа, кратные какому-то простому р. Учитывая наше описание решета, нам следовало бы вычеркивать каждое р-ое число, начиная с (р + 2) — следу- следующего за р числа в списке. Простейшее усовершенствование — это начинать процесс вычеркивания не с р + 2, а с наименьше- наименьшего числа, кратного р, которое не делится на простое число, меньшее р. Найдем его. Положительные числа, кратные р, за- записываются в виде кр, где к — натуральное. Если к < р, то кр делится на число, меньшее р, а именно на к. Значит, первое
108 Простые числа кратное р число, которое не делится на простое число, мень- меньшее р, есть р2. Так что достаточно вычеркивать каждое р-ое число, начиная с р2. Однако необходимо обратить внимание на то, что даже после этого нововведения останутся числа, которые будут вычеркиваться не единожды. Что касается другого замечания, можем ли мы закончить отсев раньше, чем дойдем до n-го шага? На этот раз ответ положителен, он следует из того, что мы только что сделали. Допустим, например, что мы вычеркиваем каждое р-ое число. Как мы только что видели, первое число, подлежащее вычер- вычеркиванию, равно р2. Но если р2 > п, такого числа нет в списке и мы можем забыть о нем. В итоге, нам нужно вычеркивать каждое р-ое до тех пор, пока р ^ у/п. Поскольку р — целое, это равносильно тому, что р < [\Аг] • В примере, разобранном выше, [V4I] = 6. Вот почему отбрасывание кратных 3 и 5 было достаточно для вылавливания всех составных чисел из списка. Сейчас мы должны обсудить компьютерную реализацию решета. Список нечетных чисел представляется одномерным массивом, который также принято называть вектором. Напо- Напомним, что с каждой ячейкой вектора ассоциируется два числа. Одно из них — значение ячейки, а другое идентифицирует ее местоположение в векторе. Например, в векторе ( а Ь с d e f g ) t величина ячейки, отмеченной стрелкой, равна Ь, а ее индекс — двум, поскольку она стоит на втором месте в векторе. Вернемся к решету Эратосфена. Предположим, что мы хо- хотим найти все простые числа, не превосходящие нечетного це- целого п. Сначала мы должны построить вектор с (п—1)/2 ячей- ячейками, по одной для каждого нечетного целого 2j + 1. Ячейки будут принимать одно из двух возможных значений: 1 или 0. Если значение ячейки равно 0, то нечетное число, ею предста-
§ 4.6. Решето Эратосфена 109 вленное, было вычеркнуто на каком-то предыдущем шаге про- процесса просеивания. Итак, начальное значение каждой ячейки равно 1, поскольку еще нет никаких вычеркнутых чисел. Что- Чтобы «вычеркнуть» число 2j + 1, нужно заменить 1, стоящую в j-ой ячейке вектора, на 0. Конечно, эта ячейка могла быть «вычеркнута» на предыдущем шаге решета. В этом случае ее значение уже равно 0 и не будет меняться в процессе выпол- выполнения следующих шагов алгоритма. Теперь мы приведем более или менее подробную версию алгоритма для решета Эратосфена, который был описан вы- выше. Она содержит оба усовершенствования, которые мы обсу- обсуждали, т.е. каждое р-ое число вычеркивается начиная с р2, а алгоритм заканчивается, как только р превысит Решето Эратосфена Ввод: нечетное натуральное п. Вывод: список всех нечетных положительных простых чисел, меньших или равных п. Шаг 1. Начинаем с создания вектора v с (п — 1)/2 ячейками, каждой из которых присвоено значение 1, и полагаем Р = 3. Шаг 2. Если Р2 > п, выписываем все числа 2j + 1, для кото- которых значение j-ой ячейки вектора равно 1 и останавливаемся; в противном случае переходим к шагу 3. Шаг 3. Если значение ячейки вектора v с номером ^^ рав- равно 0, увеличиваем Р на 2 и возвращаемся к шагу 2; в против- противном случае переходим к шагу 4. Шаг 4. Присваиваем новой переменной Т значение Р2; за- замещаем нулем значение ячейки вектора v под номером ^^ и увеличиваем Т на 2Р; повторяем эти два шага до тех пор, пока Г < п, затем увеличиваем Р на 2 и возвращаемся к шагу 2. Заметим, что на последнем шаге мы увеличиваем Т на 2Р, а не на Р, как можно было бы ожидать. Мы делаем это по- потому, что вектор v представляет набор нечетных чисел, так что как Ту так и Р нечетны. Поэтому, если мы вычеркиваем
110 Простые числа каждое р-ое число, то число, которое будет вычеркнуто после Т, есть Т + 2Р. Вам может показаться, что существует простое изменение описанной выше процедуры, которое ускорит алгоритм. Спо- Способ, с помощью которого мы избавляемся от нежелательных составных чисел в векторе, состоит в замене 1, стоящей в со- соответствующей ячейке, на 0. Но почему, если мы не заботим- заботимся о составных числах, просто не выбросить их из вектора? К сожалению, мы не можем этого сделать. Неприятность в том, что метод, которым мы узнаем кратно ли число, соот- соответствующее данной ячейке, некоторому р, зависит от номера ячейки. Другими словами, числа, кратные р, встречаются в каждой р-ой позиции вектора. Если мы удалим некоторые чи- числа из списка, то алгоритм, который мы описали, перестанет работать. Подобно всем алгоритмам, решето Эратосфена имеет огра- ограничения. Например, оно неэффективно при поиске очень боль- больших простых чисел. Напомним, однако, что цель этого ал- алгоритма — поиск всех простых меньших, чем определенная верхняя граница. Ясно, что такой поиск невыполним, если гра- граница слишком велика. Суммируя ограничения, накладываемые назначением ал- алгоритма, отметим два его слабых места: решето требует уй- уйму компьютерной памяти и должно проделать слишком много витков цикла. К его достоинствам можно отнести простоту программирования и, кроме того, нам не нужно вычислять отдельные делители. Упражнения 1. Пусть а, Ь, с и d — целые числа, причем а > 0. Рассмо- Рассмотрим многочлен f(x) = ах3 + Ьх2 + сх + d степени 3. Предпо- Предположим, что найдется такое натуральное число т, что f(m) = = р > 0 простое. Найдите натуральное значение /г, для кото- которого f(m + hp) — составное число.
Упражнения 111 2. Используя алгоритм деления методом проб из § 3.2, най- найдите все простые делители числа р* + 1 для A) v = 17; B) р = 13. Нечетное простое число можно записать либо как An + 1, либо как An + 3. Другими словами, возможные остатки от де- деления этого числа на 4 — это 1 или 3. Например 3, 7, 11 и 19 имеют вид 4п + 3, в то время, как 5 и 13 — вид An 4- 1. Цель упражнений 3-7 — доказательство бесконечности множества простых чисел вида 4п + 3. Это факт верен также и для про- простых вида An +1, но его доказательство не столь элементарно; оно может быть найдено в [23]. 3. Покажите, что произведение двух целых чисел вида 4n-t-l имеет тот же вид. 4. Покажите, что каждое нечетное простое число имеет вид либо An + 1, либо An 4- 3. 5. Верно ли, что произведение двух чисел вида An + 3 тоже имеет вид An 4- 3? 6. Предположим, что 3 < р\ < • • • < Рк — простые числа вида An 4- 3. Используя упражнение 3, покажите, что число 4(pi -Vi" • • Рк)+3 должно делиться на простое число вида 4п+3, не принадлежащее множеству {3, р\, ... 7. Основываясь на предыдущем упражнении, покажите, что существует бесконечно много простых чисел вида An + 3. 8. Мы говорили в упражнении 5 главы 2, что если п> т — натуральные числа, то НОД(^(п),^(т)) = 1. Иначе говоря, два различных числа Ферма не могут иметь общий делитель. Используя этот факт, дайте другое доказательство бесконеч- бесконечности множества простых чисел. 9. Докажите, что если р, р + 2 и р + А — положительные простые числа, то р = 3.
112 Простые числа 10. Пусть / — квадратный многочлен. Напишите програм- программу поиска целого числа п, меньшего 100, для которого / (п) — простое число. Исходными данными программы будут коэф- коэффициенты а, Ь и с многочлена /(ж) = ах2 + Ьх + с. Эти коэф- коэффициенты предполагаются целыми, но могут быть как поло- положительными, так и отрицательными. Программа будет вычи- вычислять / (п) для всех неотрицательных целых п, меньших 100, и выбирать из них простые числа. Чтобы сделать это, мы снача- сначала должны применить решето Эратосфена для выявления всех простых чисел, меньших, чем тах{|/@)|, |/A00)|}. Заметим, что необходимо наложить разумные ограничения на \а\, \Ь\ и |с|. В противном случае /(ж) может выйти за границы обла- области целых чисел, поддерживаемой языком программирования, которым Вы пользуетесь. Примените эту программу к каждо- каждому из следующих многочленов: A)/(ж)=ж2 + 1; B) f(x) = х2 - 69ж + 1231; C) /(ж) =2ж2-199; D) f{x) = &х2 - 530ж 4- 7681. Второй многочлен — это вариант знаменитого примера, опубликованного Л. Эйлером в 1772 году. 11. Мы упоминали в §4.5, что есть несколько формул, ап- аппроксимирующих тг(ж), число простых чисел, не превосходя- превосходящих х. Например, в качестве следствия из теоремы о простых числах мы получили, что ж/In ж приблизительно равно п(х) для больших ж. Но в этом случае, чтобы ошибка была незна- незначительной, число х должно быть чудовищно большим. В этом упражнении мы экспериментально изучаем формулу, дающую лучшую аппроксимацию при малых ж. Вот эта формула:
Упражнения 113 где In обозначает натуральный логарифм (по основанию е), и а0 = 229 168,50747390, ai = -429 449,7206839, а2 = 199 330,41355048, а3 = 28 226,22049280, а4 = 0, а5 = 0, а6 = -34 712,81875914, а7 = 0, а8 = 33 820,10886195, а9 = -25 379,82656589, а10 = 8 386,14942934, ап = -1360,44512548, ап = 89,14545378. Напишите программу, вычисляющую 7г(ж) по данному на- натуральному ж, положив в ее основу решето Эратосфена. При- Примените эту программу для определения разности 7г(ж) — S(x) при х = 11; 100; 1000;...; 9000 и 10000. Сравните полученный результат с соответствующими значениями тг(ж) — ж/In ж. Ка- Какой можно сделать вывод? 12. Мы видели, что нечетное простое число может быть за- записано или как 4п+1, или как 4п+3. Более того, как следует из упражнения 7, простых чисел вида 4п + 3 бесконечно много. Верно также и то, что остальных простых чисел тоже бес- бесконечно много, хотя доказать это сложнее (см. комментарий перед упражнением 3). Цель этого упражнения — эксперимен- экспериментально установить, какой из этих типов простых чисел чаще встречается. Пусть х — положительное вещественное число, ■к\{х) — число положительных простых чисел вида 4п 4-1, не превосходящих ж, а тгз(ж) — аналогичное число простых вида Ап + 3. Исходя из решета Эратосфена, напишите программу, вычисляющую 7ri(a;) и тгз(ж) по данному натуральному х. Ис- Используйте ее для определения 7Ti(a;), тгз(ж) и £4|j для х = 100fc, где 1 < к < 105. Известно, что lim ЩЧ = 1. Подтверждают ли ваши данные этот результат? 13. Адаптируйте программу из упражнения 12 для опре- определения наименьшего числа х, при котором 7Ti(a;) >
114 Простые числа Численные данные, доступные в начале столетия, спрово- спровоцировали некоторых математиков сделать вывод о том, что за исключением малых значений х неравенство п\(х) < тгз(ж) должно быть всегда верным. Истина выяснилась в 1914 го- году, когда Дж. Е. Литлвуд (J. E. Littlewood) показал, что су- существуют такие бесконечные последовательности жх,Ж2,... и у 1,2/2 5 • • • положительных вещественных чисел, для которых Ит(тг1(а;г)—7г3(жг)) = оо и IimGri(y,)-7r3(j/i)) = -°°. г-vco г-»оо Мораль очевидна: рискованно делать обобщения на основании численных данных.
Глава 5. Арифметика остатков Большинство алгоритмов, описанных в предыдущих гла- главах, проверяют делимость чисел непосредственным делением, убеждаясь, что в остатке действительно получается 0. Одна- Однако сейчас изобретены более эффективные методы, одним из которых (в главе 10) доказано, что 5 • 223473 + 1 — множи- множитель числа jFB3471). Так как эти числа слишком большие, мы полагаем, что даже проверка справедливости этого утвержде- утверждения непосредственным делением займет очень много времени. Можно ли оценить насколько велико число F B3 471)? Пользу- Пользуясь логарифмами, легко показать, что в нем более, чем ю7063 знаков! То есть количество знаков в FB3471) больше числа элементарных частиц в видимой части вселенной. Не прихо- приходится и говорить о проверке непосредственным делением того факта, что 5 • 223473 + 1 — множитель числа FB3 471). Как же тогда это сделать? Выход из этой дилеммы заключается в использовании ариф- арифметики остатков, являющейся темой данной главы. При ре- решении вопросов делимости техника арифметики остатков иг- играет основную роль и, как мы увидим в главе 8, она полезна также при вычислениях, имеющих отношение к феномену пе- периодичности.
116 Арифметика остатков Основные идеи арифметики остатков были известны очень давно, но систематическую разработку ее аппарата впервые осуществил Гаусс в начале своих «Арифметических исследова- ний»(см. [17]). В наше время к арифметике остатков обычно подходят с точки зрения отношения эквивалентности, кото- которое мы подробно рассматриваем в первом параграфе. §5.1. Отношение эквивалентности Арифметику остатков лучше всего вводить с помощью от- отношения эквивалентности. Поскольку такие отношения будут играть важную роль как в этой главе, так и далее, стоит по- подробно разобрать это базисное понятие. Пусть X — конечное или бесконечное множество. Отноше- Отношением на X называется правило, по которому «сравниваются» его элементы. Это неформальное определение, но его вполне достаточно для наших целей. Заметим, что для определения отношения мы должны четко задать само множество; други- другими словами, нам должно быть ясно, какие элементы нужно сравнивать. Рассмотрим несколько примеров. На множестве целых чи- чисел есть много простых отношений, вроде «равно», «не рав- равно», «меньше, чем», «меньше или равно». На множестве цвет- цветных мячей у нас есть отношение «тот же цвет». Последний пример, ввиду своей конкретности, хорош для запоминания в качестве модельного случая. Кстати, мы предполагаем, что каждый мяч из множества окрашен только в один цвет, пе- пестрые мячи мы не рассматриваем. Отношение эквивалентности — это отношение весьма спе- специфичного вида. Возвращаясь к общим определениям, предпо- предположим, что X — множество, в котором было определено отно- отношение. Удобно зафиксировать какой-нибудь символ для обо- обозначения эквивалентности, обычно употребляют значок «~». С этого момента «~» будет отношением эквивалентности,
§ 5.1. Отношение эквивалентности 117 если для всех x,y,z € X выполнены следующие свойства: A) ж ~ ж; B) если х ~ у, то у ~ ж; C) если ж ~ у и у ~ z, то ж ~ г. Первое свойство называется рефлексивностью. Оно гово- говорит, что когда мы имеем отношение эквивалентности, любой элемент эквивалентен сам себе. Это свойство верно для равен- равенства целых чисел: любое целое число равно самому себе. Но оно не выполнено для отношения «<». Поэтому «<» на множестве Z не является отношением эквивалентности. Второе свойство называется симметричностью. Отноше- Отношение «<» на множестве целых чисел не симметрично. Действи- Действительно, 2 < 3, в то время как неравенство 3 < 2 ложно. С другой стороны, отношение «^» на Z рефлексивно, но не сим- симметрично. Третье — свойство транзитивности. На множестве це- целых чисел отношения «равно», «меньше, чем», «меньше или рав- равно», — транзитивны. А вот «не равно» этим свойством не обла- обладает. Действительно, 2 Ф 3 и 3 ф 2, но из этих неравенств не следует 2^2. Добавим, что «^» симметрично, но не рефлек- рефлексивно. Мы предусмотрительно привели примеры отношений, ко- которые не удовлетворяют этим свойствам, потому что это един- единственный путь к пониманию их действительного смысла. Имен- Именно владение примерами и контрпримерами обеспечивает успех в усвоении новых понятий. В примерах отношения эквива- эквивалентности нет недостатка. Равенство целых чисел, очевидно, удовлетворяет всем свойствам, выписанным выше. Отношение •тот же цвет» на множестве цветных мячей — еще один про- простой и, пожалуй, самый яркий пример. Среди примеров отно- отношения эквивалентности на множестве многоугольников нахо- находятся такие отношения, как «одинаковое число сторон» и «одна и та же площадь».
118 Арифметика остатков Отношение эквивалентности используют для классифика- классификации элементов данного множества, группируя их в подмноже- подмножества по принципу схожести свойств. Естественное разбиение множества, индуцированное отношением эквивалентности, на- называется разбиением на классы эквивалентности. Пусть на множестве X задано отношение эквивалентности ~, и х — элемент этого множества. Классом эквивалентности элемен- элемента х называется подмножество в X, состоящее из всех эле- элементов, эквивалентных х относительно ~. Обозначив класс эквивалентности элемента х символом ж, можно записать: х = {у в X : у ~ж}. Приведем простой пример. Обозначим символом Ж множество цветных мячей с отношением эквивалентности «тот же цвет». Класс эквивалентности красного мяча в Ж состоит из всех красных мячей, содержащихся в Ж. Одно из свойств классов эквивалентности настолько важ- важно, что мы назовем его основным принципом классов эквива- эквивалентности. Принцип гласит, что любой элемент класса экви- эквивалентности — хороший представитель всего класса. Иначе говоря, зная один элемент из класса эквивалентности, можно немедленно восстановить этот класс полностью. Этот факт бросается в глаза, когда мы имеем дело с множеством Ж цвет- цветных мячей и отношением «тот же цвет». Предположим, Вам го- говорят, что в картонной коробке находятся все элементы одно- одного класса эквивалентности множества Ж. Увидев один элемент из этого множества (допустим, это синий мяч), Вы немедленно заключаете, что в коробке лежит класс эквивалентности всех синих мячей Ж. Проще и быть не может! Вернемся к абстрактному множеству X с отношением эк- эквивалентности ~. Основной принцип говорит, что если у — элемент из класса эквивалентности х, то классы эквивалент- эквивалентности х и у совпадают. То же самое можно выразить короче: если х 6 X и у € х, то х = у.
§ 5.1, Отношение эквивалентности 119 Докажем это непосредственно из определяющих свойств отно- отношения эквивалентности. Если у € ж, то, по определению класса эквивалентности, у ~ х. Ввиду симметричности, х ~ у. Но ес- если z € х, то и z ~ х. Тогда свойство транзитивности влечет z ~ у, т.е. z € у. Мы доказали включение: ж С у. Похожее рас- рассуждение доказывает обратное включение: у С ж. Вероятно, это все может показаться несколько педантичным. Но основ- основной принцип — такой источник неразберихи и ошибок, что нам не стоит жалеть усилий на прояснение его точного смы- смысла. Кроме того, полезно осознать, что он непосредственно следует из определения отношения эквивалентности. Кстати о педантичности: вы поняли, что свойство ж € ж вытекает из рефлексивности? Основной принцип приводит к важнейшему свойству отно- отношения эквивалентности. Как и раньше, пусть X — множество с отношением эквивалентности ~; тогда A) X — объединение своих классов эквивалентности отно- относительно ~; и B) два разных класса эквивалентности не могут иметь об- общего элемента. Первое утверждение следует из часто упоминаемого фак- факта: класс эквивалентности элемента ж содержит сам этот эле- элемент. Для доказательства второго предположим, что элемен- элементы х, у, z € X и z € ж П у. Так как г € ж, то по основному принципу z = х. Аналогично z = у. Так что х = у. Заметим, что свойства A) и B) означают, что множество X разбито на непересекающиеся подмножества, классы эквивалентности. Другими словами, мы имеем дело с разбиением множества X. Множество, составленное из классов эквивалентности мно- множества X относительно отношения эквивалентности ~, имеет специальное название: фактормножество X по отношению ~. Отметим, что элементы фактормножества — это подмноже- подмножества в X. Поэтому фактормножество не является подмноже- подмножеством в X, будьте внимательны!
120 Арифметика остатков Закончим этот параграф примером, в котором проявляет- проявляется наконец истинная природа дробей. Из чего состоит дробь? Когда Вы на нее смотрите, то видите два числа, одно из ко- которых (знаменатель) должно быть ненулевым. Конечно, Вы ее, вероятно, воспринимаете как частное. Но если на Вас на- надавить, Вы можете попытаться выбрать более легкий выход и сказать, что дробь в действительности — пара чисел, одно из которых не равно нулю. Однако, такое определение некор- некорректно. В математике две пары равны, если они имеют одинаковые первый и второй элементы. Так, пары B,4) и A,2) неравны. Но дроби 2/4 и 1/2 равны; так что дроби — не пары чисел. Что же такое дроби? Это элементы фактормножества! Рас- Рассмотрим множество Q пар целых (а, Ь) с Ь ф 0. На стандартном жаргоне Q = Z x (Z\ {0}). Две пары (а, Ь) и (а1, V) целых чисел можно теперь называть эквивалентными, если аЬ' = а'Ь. Лег- Легко проверить, что это отношение эквивалентности, а дробь — класс эквивалентности множества Q относительно этого от- отношения. Следовательно, а/Ь означает не пару (а, Ь), а беско- бесконечное множество всех пар из Q, эквивалентных (а,Ь). Итак, множество Q рациональных чисел — это фактормножество множества Q по только что определенному отношению экви- эквивалентности. Представьте себе на минуту, что Вы до сих пор ничего о дробях не слышали и Вам придется исходить из описания, сделанного выше. Если Вам теперь скажут, что нужно вычи- вычислять с дробями, Вы почувствуете, что имеете вескую причи- причину для паники: Вы же только что выучили, что дробь — это бесконечное множество. Мысль о прибавлении к одному беско- бесконечному множеству другого бесконечного множества внушает легкое беспокойство. Именно в этот момент приходит на по- помощь основной принцип. Вам не нужно заботиться о бремени всего бесконечного множества; нужно знать только один эле- элемент из него. Этот элемент расскажет Вам обо всем, что не-
§ 5.2. Сравнения 121 обходимо знать о целом классе эквивалентности. Более того, Вас устроит любой элемент класса. Итак, Вы можете оперировать с 1/2 как обычно, так же, как если бы это была пара чисел. Вы вспоминаете, что дробь — это класс эквивалентности, только когда (в процессе вычисле- вычислений) оказывается, что дробь можно сократить. В этот момент вы заменяете одного представителя класса эквивалентности на другой для упрощения вычислений. Зачем мы сделали такое длинное отступление о дробях? В следующем параграфе определятся отношение эквивалент- эквивалентности на множестве Z, а фактормножество этого отношения играет абсолютно фундаментальную роль в этой книге. Как и в случае дробей, классы эквивалентности будут бесконеч- бесконечны, а нам предстоит делать вычисления с ними. Но теперь Вы знаете, что нет причин для волнения. § 5.2. Сравнения Проанализируем хорошо знакомые 24-часовые часы в све- свете наработок предыдущего параграфа. Когда некто говорит «один час», мы не можем понять, подразумевает ли говорящий это время сегодня, вчера, или завтра. Поэтому «один час» это не момент времени, а класс эквивалентности таких моментов. Объясним более подробно. Сначала разделим временной кон- континуум на равные интервалы, скажем часы. После этого опре- определим отношение эквивалентности: два момента, отличающи- отличающиеся на эти 24 равных интервала, эквивалентны. Теперь один час — это класс эквивалентности моментов по специальному отношению эквивалентности. С одной стороны, такой подход усложняет очевидное, но с другой, крайне полезно попракти- попрактиковаться с феноменом цикличности. Теперь мы будем рассматривать похожее отношение экви- эквивалентности, определенное на множестве целых чисел. Выбе- Выберем натуральное число п, которое с этого момента будет фик-
122 Арифметика остатков сировано. Оно называется периодом, или модулем отношения, которое мы собираемся определить. Построим отношение эквивалентности на множестве Z, де- декларируя, что каждое n-ое число (начиная с 0) входит в один и тот же класс эквивалентности. Иначе говоря, любые два це- целых числа, отличающиеся друг от друга на кратное п, эквива- эквивалентны. Более формально, два целых числа а и Ь сравнимы по модулю п, если а — Ь делится на п; в таком случае мы пишем: a = b (modn). Приведем несколько числовых примеров. Для модуля п = 5 10 = 0 (mod 5) и 14 = 24 (mod 5). Выберем другой модуль, скажем п = 7; в этом случае 10 = 3 (mod 7) и 14 = 0 (mod 7). Заметим, что числа, сравнимые по некоторому модулю, не обя- обязательно сравнимы по другому модулю. Так, 21 сравнимо с 1 по модулю 5; но эти числа не сравнимы по модулю 7, потому что разность 21 — 1 = 20 не кратна 7. Теперь нужно проверить, что сравнимость по модулю п является отношением эквивалентности. Начнем с рефлексив- рефлексивности. Для ее проверки мы должны показать, что любое целое число а удовлетворяет сравнению а = a (mod n). Это будет так, если а — а кратно п. Но а — а — 0 кратно любому целому числу. Значит, сравнение по модулю п рефлексивно. Следующим идет свойство симметричности. Пусть для не- некоторых целых а и Ь справедливо сравнение а = b (mod n). Это означает, что а — b = kn для какого-то целого к. Умножая это равенство на —1, получаем Ь— а = —(а — Ь) = {—к)п, что также кратно п. Поэтому b = a (mod n), и мы доказали, что сравнение по модулю п симметрично.
§ 5.2. Сравнения 123 Наконец, транзитивность. Предположим, что a = b (mod n) и Ь = с (mod n), где о, Ь и с — целые числа. По определению, эти сравнения говорят, что разности о-ЬиЬ-с кратны п. Но при сложении кратных п получается число, делящееся на п. Поэтому (а — Ь) + (Ь — с) = (а — с) кратно п. Другими словами, а = с (mod n), как мы и хотели показать. Убедившись в спра- справедливости этих трех свойств для сравнения по модулю п, мы делаем вывод, что оно — отношение эквивалентности. Множество, которое будет притягивать большую часть на- нашего внимания на протяжении этой главы — это фактормно- фактормножество Ъ по отношению сравнения по модулю п. Оно называ- называется множеством вычетов по модулю п и обозначается сим- символом Ъп. Из определения фактормножества следует, что эле- элементы Ъп — подмножества в Z, т.е. классы эквивалентности в Ъ сравнимых чисел по модулю п. Мы хотим отождествить между собой элементы этих классов. Пусть а е Ъ. Класс а образован всеми целыми Ь, для ко- которых Ь — а кратно п, т.е. Ь — а = кп для некоторого к е Ъ. Таким образом, класс эквивалентности числа а описывается формулой: а = {о + кп\ к е Z}. Заметим, что 0 состоит из всех чисел, кратных п, и каждый класс эквивалентности — бесконечное множество. Мы видели, что в а бесконечно много элементов, каждый из которых хорошо представляет класс целиком. Отсюда ре- резонный вопрос: можно ли простым способом найти наимень- наименьшее натуральное число, представляющее а? Ответ — да. Нам нужно только поделить а на п. Обозначим через г остаток, а через q неполное частное этого деления; тогда а = nq + r и О^г^п — 1. Следовательно, разность а — г = nq кратна п. Поэтому а = г (mod n). Число г называется вычетом а по модулю п.
124 Арифметика остатков На самом деле мы доказали больше, чем обещали. Действи- Действительно, мы показали, что любое целое число сравнимо с одним из целых, лежащим между 0 и п — 1. В частности, факторм- фактормножество Zn имеет не более п классов 0,... ,п — 1. Для уве- уверенности в том, что оно имеет ровно п различных классов сопряженности по модулю п, нам нужно проверить, что ника- никакие два из выписанных классов не могут быть равными. Ка- Каждый класс сопряженности представляется неотрицательным целым числом меньшим п. Если бы классы совпадали, их пред- представители были бы сравнимы по модулю п, т.е. разность двух разных неотрицательных целых чисел, меньших п, делилась бы на п. Этого не может быть. Так что классы 0,..., п — 1 на самом деле различны. Итак, Говорят, что класс эквивалентности а записан в приведенном виде, если 0 ^ а ^ п — 1. Как и в случае дробей, класс со- сопряженности удобно представлять именно в таком виде. Это- Этому есть две причины. Первая: меньший представитель класса выбрать легче, чем больший. Вторая: если два класса запи- записаны в приведенном виде, то очень легко определить, равны они или нет (они будут равны тогда и только тогда, когда их представители совпадают). Разумеется, утверждение неверно, если классы записаны не в приведенном виде. Это все очень хорошо, но кажется довольно абстрактным. Хорошо бы иметь наглядную геометрическую картинку, изо- изображающую множество Zn. Вспомним геометрическое изобра- изображение множества Z. Большинство людей представляют себе целые числа как точки, равномерно расположенные вдоль пря- прямой линии. Где-то на этой прямой стоит точка, изображающая О, так что отрицательные целые числа находятся слева от нее, а положительные — справа. Сравнение по модулю п отожде- отождествляет между собой все числа, отличающиеся на кп (к е Z), и поэтому, подходя к п, мы должны вернуться опять к 0.
§ 5.3. Арифметика остатков 125 Если прямую целых чисел представить себе как гибкую проволоку, то можно взять точку, помеченную п, и склеить ее с 0, что даст окружность. Продолжая наматывать прямую целых чисел на получившуюся окружность, Вы увидите, что числа, сравнимые по модулю п, попадут в одни и те же точки на окружности. В связи с этим Ъп можно представлять себе как окружность, на которой через равные промежутки отме- отмечены п классов сопряженности. § 5.3. Арифметика остатков Геометрическая картинка, приведенная в конце предыду- предыдущего параграфа, помогает нам дать простое описание сложе- сложения в Zn. Представьте себе п классов эквивалентности Zn ци- цифрами, отмеченными на циферблате часов. Предположим, что О находится в верхней точке круга (что соответствует 12-ти часам), в то время как остальные классы распределены вдоль границы циферблата через равные промежутки. Пусть эти ча- часы имеют только одну стрелку, закрепленную в центре цифер- циферблата, и мы можем указывать ею на наши классы. Хотелось бы превратить эти «часы» в прибор для вычисле- вычисления сумм в Ъп. Бесспорно, «часы» для арифметики остатков — это то же самое, что счет на пальцах для нормальной ариф- арифметики. Последний, между прочим, имеет длинную и выдаю- выдающуюся историю. В средние века ему обучали в монастырских школах, а одна из первых английских книг по арифметике, «Основа наук» Роберта Рекорда (Robert Recorde), содержала целый параграф, объясняющий «искусство счета руками». Так что мы в хорошей компании. Итак, предположим, что нужно сложить а и Ь, два класса из Ъп. Будем предполагать, что оба класса записаны в приве- приведенной форме, т.е. а и Ь неотрицательны и меньше п. Процесс вычисления а + Ь следующий. Поместим стрелку «часов» в точ-
126 Арифметика остатков ку, помеченную а, затем передвинем ее по часовой стрелке на Ь мест. Теперь стрелка будет показывать сумму а + Ь. Численный пример. Предположим, что Вам нужно к 4 прибавить 5 в Ъ%. Поместите стрелку «часов» на 5 и передвинь- передвиньте ее вперед на 4 места. Когда Вы будете это делать, стрелка минует 0 и остановится на 1. Значит 4 + 5 = Т в Zg. К сожалению, наш прибор будет слишком медленно рабо- работать при больших п (как и счет на пальцах, который труд- трудноосуществим при слишком больших числах). Поэтому тре- требуется более математизированный способ вычисления сумм в Ъп. Реально, он достаточно прост. Пусть а и Ь — классы в Zn, которые нам предстоит сложить. Операция определяется формулой: а + Ь = а + Ь. Интерпретация этой формулы требует некоторой осторожно- осторожности. Слева в ней стоит сумма двух классов Zn, а справа мы имеем класс, соответствующий сумме двух целых чисел. Итак, сложение классов определяется в терминах операции, которую мы хорошо знаем: сложение целых чисел. Вернемся к примеру сложения в Zs, которое мы выполнили с помощью прибора. Мы хотим к 4 прибавить 5. Учитывая формулу, сначала сложим 4 и 5; их сумма, очевидно, равна 9. Отсюда следует, что 4 + 5 = 9. На первый взгляд кажется, что новый результат суммирования отличается от полученного с помощью прибора. Но не забывайте, что 9 — 1 = 8, т.е. 9 = 1. Последний пример указывает на одну важную проблему. Мы видели, что класс эквивалентности может быть предста- представлен любым своим элементом; это основной принцип из §5.1. Но складывая два класса, мы сначала суммируем их предста- представителей, а затем берем соответствующий класс. Как же мы мо- можем быть уверенными в том, что при выборе каких-то других представителей, результирующий класс останется прежним? Для уверенности в том, что Вы уловили суть, рассмотрим еще
§ 5.3. Арифметика остатков 127 раз сумму 5 и 4 в Ъ%. Следуя сформулированному выше прави- правилу, мы нашли, что их сумма равна 9. Однако, ТЗ = 5 и 12 = 4, и формула говорит нам, что если сложить 13 и 12, то полу- получится 25. Так, поначалу может показаться, что выбирая раз- различные представители классов, мы получаем разные суммы. Но это только кажется. На основании того, что 25 — 9 = 16 делится на 8, мы заключаем: 25 = 9 в %%. Один из путей решения проблемы мог бы состоять в записи классов в приведенном виде перед их сложением. Это неудоб- неудобно и совсем необязательно. Как подсказывает разобранный выше пример, результат суммирования не зависит от выбора представителей классов. Это очень важно и должно быть про- проверено в деталях. Пусть а и Ь — два класса в Ъп. Пусть а = а' кЬ — b1. Мы хотим показать, что a + b= a' + br. Но равенство а = а' означает, что а — а' кратно п и то же самое верно для b — Ь'. Сумма кратных п снова кратна п, откуда число (а - а') + (Ь - У) = (а + Ь) - (а' + Ь') должно быть кратно п. Следовательно, а + Ь = а' + V, что и требовалось доказать. Вычитание классов определяется аналогичным образом и совсем нетрудно. Посмотрим, как должно определяться умно- умножение. Пусть а и Ъ — классы в Zn. Определение сложения клас- классов советует написать а • Ь = аЬ. Как и в случае суммы, мы должны быть уверены, что опреде- определение умножения не зависит от выбора представителей клас- классов. Итак, предположим, что а = а' и Ь = V. Нужно проверить, что ab = a'bf. Равенство а = а' влечет: а —а' кратно п; скажем, а = а' + гп для некоторого целого г. Аналогично b = b' + sn для некоторого целого s. Умножая а на Ь, получим ab = (а' + rn)(b' + sn) = a'b' + (a's + rb' + srn)n. Значит ab — a'b' кратно п и ab = а'Ы.
128 Арифметика остатков Зная теперь, как складываются и перемножаются классы, любопытно выяснить, так же ли ведут себя эти операции, как их тезки в Z. Пусть а, Ь и с — классы в Zn. Сложение классов обладает следующими свойствами: (а + Ь) +с = а + (Ь + с); а + Ь = Ь + а; а + 0 = а; Элемент ^а называется противоположным а. Заметим, что если а записан в приведенном виде, то приведенным видом класса ^а будет п — а. Умножение классов обладает следую- следующими свойствами: а • 1 = а. Итак, каждое свойство умножения соответствует свойству сло- сложения, за одним исключением: существование противополож- противоположного элемента. Мы вернемся к этому вопросу в § 5.7, где обсу- обсудим деление классов. Есть еще свойство дистрибутивности а- (Ь + с) = а-Ъ+а-с. Эти свойства довольно легко следуют из их аналогов для сло- сложения и умножения целых, поэтому мы опустим доказатель- доказательства. Последовательному читателю не составит труда найти их самостоятельно.
§ 5.4. Критерий делимости 129 Ну хорошо. Операции в Zm, очевидно, ведут себя так же, как их двойники в Z. Однако слепо полагаться на эту анало- аналогию довольно опасно, поскольку может сформироваться лож- ложное чувство уверенности, приводящее к ошибкам. Действи- Действительно, одно ключевое свойство целых чисел не выполняет- выполняется для сравнений по модулю п. Следующий пример проясняет этот факт. Рассмотрим классы 2 и 3 в Ъ$. Они оба отличны от нуля, однако 2-3 = 6 = 0, т.е. произведение двух ненулевых элементов из Ъ§ может рав- равняться нулю. Такого, конечно, не бывает в Z. В качестве важного следствия этого примера получаем, что в Ъп не всегда можно сокращать на ненулевой элемент. Другими словами, если а ф 0, то не всегда справедливо рассу- рассуждение: а -Ь = а-с ==> Ъ = Ъ. Так, например, 2 • 3 = 2 • 0, но 3 ф 0. Мы вернемся к это- этому вопросу в § 5.7, рассмотрев сначала некоторые приложения арифметики остатков. § 5.4. Критерий делимости Большинство людей помнят из начальной школы, что чи- число делится на 3, если сумма цифр в его десятичной записи делится на 3. Но почему это верно? Мы легко можем это дока- доказать, используя сравнения по модулю 3. Напомним, что число делится на 3 тогда и только тогда, когда оно сравнимо с 0 по модулю 3. Значит, на языке арифметики остатков критерий делимости на 3 утверждает, что число сравнимо с 0 по модулю 3. если и только если то же самое справедливо для суммы его цифр. Последнее утверждение мы сейчас и докажем.
130 Арифметика остатков Пусть а — целое число и ао,ах,..., а„ — его цифры в де- десятичной записи. Иначе говоря, а = ап10п + d-ilO11 + • • • + ailO +'a0, где 0 ^ щ ^ 9 для г = 0,..., п. В предыдущем параграфе мы показали, что умножение не зависит от выбора представите- представителей классов по модулю п. Поскольку 10 = 1 (mod 3), независи- независимость от выбора говорит нам, что 10fc сравнимо с lfc no моду- модулю 3 для любого положительного целого к. Другими словами, любая степень 10 имеет вычет 1 по модулю 3. Значит, а = ап + an-i H 1- ai + uq (mod 3). Отсюда немедленно следует, что a = 0 (mod 3) тогда и только тогда, когда ап + an_i + • • • + ai + clq = 0 (mod 3). А это как раз то, что нужно было доказать. Заметим, что все проделанные вычисления останутся вер- верными после замены 3 на 9, потому что 10 = 1 (mod 9). Значит, целое число делится на 9, если и только если на 9 делится сум- сумма его цифр в десятичной записи. Применим похожие аргументы к другому числу, например, к 11. Снова будем предполагать, что a = ап10п + an-ilO" + • • • + ojlO + a0, где an,an_i,... ,ai,ao — цифры записи числа а. Поскольку 10 = -1 (mod 11), то 10fc = -lfc (mod 11) будет либо 1 (если к четно), либо —1 (если к нечетно). Поэтому a = an(-l)" + an_i(-l)n~1 -1 \-a2-ai +a0 (mod 11). Говоря человеческим языком, число делится на 11 тогда и только тогда, когда на 11 делится альтернированная сумма его
§ 5.4. Критерий делимости 131 цифр. Например, 3443 делится на 11, потому что 3-4+4—3 = О делится на 11. Критерии делимости на 2 и 5 слишком очевидны, чтобы приводить их доказательства. Таким образом мы нашли про- простые критерии делимости на все простые числа от 2 до 11, исключая 7. Разберемся, что произойдет в случае применения того же подхода к 7. Мы уже знаем из предыдущего примера, что та часть рас- рассуждений, которая зависит от модуля, состоит в вычислении степеней 10. На этот раз 10 = 3 (mod 7), а степени 3 не так лег- легко вычисляются, как степени 1 или —1. Попытаемся найти эти степени при малых показателях. Все сравнения, приведенные ниже, сделаны по модулю 7. 102 = З2 = 2 103 = 10 • 102 = 3 • 2 = 6 = -1 104 = 10 • 103 = (-1) -3 = 4 105 = 10 • 104 = 3 • 4 = 5 106 = 10 • 105 = 3 • 5 = 1 Заметим, что последний вычет равен 10° = 1. Это означа- означает, что вычеты будут циклически, с периодом б, повторяться. Эти вычисления показывают, что критерий делимости на 7 несколько более сложен для запоминания, чем на 3 и 11. По- Поскольку мы уже довольно" далеко продвинулись в работе над этим критерием, точно сформулируем его в простом случае. Предположим, что а = а2102 + ailO + ао, где 0 ^ ао, ai, а2 ^ 9. Используя вычеты степеней 10, вычисленные только что, мы имеем а = а2102 + ailO + а0 = 2а2 + За! + а0 (mod 7). Таким образом, а делится на 7 тогда и только тогда, когда на 7 делится выражение 2a2 + 3ai + ао. Например, 231 делится на 7 ввиду делимости 2 • 2 + 3 • 3 + 1 = 14 на 7.
132 Арифметика остатков § 5.5. Степени Во многих приложениях мы будем встречаться со следу- следующей задачей: пусть а, кап — натуральные числа; найти остаток от деления ак на п. Если к очень большое, то может оказаться невозможным даже пересчитать знаки в ак, как в примере из начала этой главы. Однако мы можем упростить эту проблему, используя арифметику остатков. Начнем с простого примера. Предположим, что мы хотим найти остаток от деления 10135 на 7. Мы видели в предыду- предыдущем параграфе, что 106 = 1 (mod 7). Деля 135 на 6, мы найдем 135 = 6 • 22 + 3. Полученное равенство дает следующие сравне- сравнения по модулю 7: 10135 = A06J2 . 103 ^ AJ2 . 103 = g Значит остаток от деления 10135 на 7 равен 6. Вычисления не всегда оказываются такими легкими. На- Например, какой остаток получится при делении З64 на 31? Вы- Вычислив несколько степеней 3 по модулю 31, мы быстро най- найдем, что З3 = —4 (mod 31). Вместо вычисления более высоких степеней в надежде, что одна из них станет снова 1, восполь- воспользуемся уже имеющейся информацией. Так как 64= 3-21 + 1, мы получаем сравнение по модулю 31: З64 = (З3J1 • 3 = (-4J1 • 3 = -BL2 • 3. Мы еще не получили искомый остаток, а только степень 2, которая лежит между нами и нашей целью. Удачно, что 25 = 1 (mod 31). Так как 45 = 8 ■ 5 + 2, мы находим З64 = -BL2 • 3 = -B5)8 • 22 • 3 = -12 (mod 31). Но —12 = 19 (mod 31), так что остаток от деления З64 на 31 равен 19. Были бы вычисления легче, продолжай мы находить сте- степени 3 до тех пор, пока не встретится 1? Ответ — нет, в чем
§ 5.6. Диофантовы уравнения 133 Вы сами можете убедиться, попытавшись найти наименьшее натуральное г, для которого Зг = 1 (mod 31). Предположим теперь, что мы хотим найти остаток от де- деления б35 на 16. В этом случае бесполезно пытаться отыскать наименьшую степень 6, сравнимую с 1 по модулю 16: ее просто нет. Действительно, б4 = 24 • З4 = 0 • З4 = 0 (mod 16), откуда б35 = б4 • б31 = 0 (mod 16). Эти примеры иллюстрируют некоторые трюки, использу- используемые для облегчения подсчета вычетов степеней по модулю п. Другие приемы появятся в последующих главах. Конечно, компьютеру не нужны никакие трюки. Это не говорит о том, что компьютер не использует арифметику остатков для та- таких вычислений; на самом деле, он ее использует. Быстрый алгоритм, вычисляющий степени по модулю п, можно найти в § П.2 приложения. Его можно использовать для доказательства делимости .FB3471) на 5 • 223473 4-1 — достижение, которое раньше казалось невыполнимой задачей. § 5.6. Диофантовы уравнения Ниже мы используем сравнения для доказательства отсут- отсутствия решений у некоторых Диофантовых уравнений. Дио- Диофантов о уравнение — это полиномиальное уравнение с не- несколькими неизвестными и целыми коэффициентами. Приме- Примеры: Зх — 2у = 1, ж3 + у3 = z2, ж3 — 117у3 = 5. Когда гово- говорят о решениях диофантова уравнения, обычно имеют в ви- виду целочисленные решения. Эти уравнения названы по имени греческого математика Диофанта из Александрии, жившего около 250 г. н.э. В своей «Арифметике» Диофант подробно
134 Арифметика остатков обсуждает проблему поиска решений неопределенных уравне- уравнений. Однако он искал рациональные решения, а не целые, что мы обычно делаем сегодня. Поскольку эти уравнения зависят от нескольких перемен- переменных, они могут иметь бесконечно много решений. Например, для любого целого к числа ж = 1 + 2А;иу = 1 + ЗА; удовлетворя- удовлетворяют уравнению Зж — 2у = 1. Уравнение х3 4- у3 = z3 — частный случай великой Теоремы Ферма, о которой рассказывалось во введении и конце второй главы. Как мы видели, если ж, у и z — целые числа, удовлетворяющие этому уравнению, то одно из них должно быть равно нулю. Это специальный случай те- теоремы, впервые доказанный Эйлером в 1770 году. Вспомните, что Ферма сформулировал свою великую Теорему на полях принадлежащей ему копии Диофантовой «Арифметики». Уравнение ж3 — 117у3 = 5 имеет более недавнюю и простую историю. В статье, написанной в 1969 году, Льюис (D. J. Lewis) показал, что это уравнение не может иметь более 18 целочи- целочисленных решений. Два года спустя Р. Финкелыптейн (R. Finkel- stein) и X. Лондон (Н. London) наконец доказали, что это урав- уравнение не имеет ни одного целого решения. Их доказательство коротко: оно занимает только страницу 111 четырнадцатого тома «Канадского Математического Бюллетеня», но отнюдь не элементарно. Однако, в 1973 году Халтер-Кох (F. Halter- Koch) и Удреско (V. St. Udresco) независимо дали доказатель- доказательство отсутствия у этого уравнения решений, которое исполь- использует только сравнения по модулю 9. Именно его мы сейчас подробно опишем. Доказательство «от противного». Предположим, что урав- уравнение ж3 — 117у3 = 5 имеет целочисленное решение, т.е. суще- существуют такие целые жо и уо, что ж3) — 117yjj = 5. Так как все числа в этом выражении целые, мы можем рассмотреть его по модулю 9. Число 117 делится на 9, поэтому ж3, = жо - 117уо = 5 (mod 9). Следовательно, если это уравнение имеет целое решение (хо, уо),
§ 5.7. Деление по модулю п 135 то Xq = 5 (mod 9). Возможно ли это? Чтобы разобраться, напомним: каждое целое число по модулю 9 имеет вычет, ле- лежащий между 0 и 8. Значит нам будет достаточно вычислить кубы по модулю 9 каждого из этих вычетов. класс по модулю 9 куб по модулю 9 0 0 т т 2 loo 3 0 4 Т 5 loo 6 0 7 Т loo loo Простой взгляд на таблицу показывает, что вычет куба целого числа по модулю 9 может быть равен только О, 1 или 8. В частности, нет такого целого хо, куб которого сравним с 5 по модулю 9: ж3, = 5 (mod 9). Следовательно, ж3 - 117у3 = 5 не может иметь целочисленных решений, что и требовалось доказать. Можно извлечь такую мораль из этого примера: первое до- доказательство теоремы часто оказывается и не самым про- простым, и не самым элегантным. Так бывает потому, что пер- первое доказательство обычно находится исследователем, «вспа- «вспахивающим целину» неизученного. Со временем связь между новыми методами и ближайшими областями становится яс- яснее, что делает возможным находить более короткое, простое и прямое доказательство, чем первое. Пример, который мы разобрали, довольно наивен, но, конечно, он не лишает закон- законной силы сделанного нами вывода. Как однажды сказал ма- математик А. С. Безикович (A. S. Besicovitch), «репутация мате- математика держится на том, сколько он дал некрасивых доказа- доказательств». § 5.7. Деление по модулю п Настало время вернуться к проблеме деления классов в Zn. Но сначала рассмотрим тот же самый вопрос в более знакомой ситуации. Пусть а и Ь — вещественные числа. Один из спосо- способов деления а на Ь состоит в умножении а на 1/Ь. Число 1/Ь
136 Арифметика остатков называется обратным к Ь и однозначно определяется как ре- решение уравнения Ь • х = 1. С практической точки зрения этот способ не облегчает дела, потому что для вычисления 1/Ь мы все равно должны разделить 1 на Ъ. Однако с теоретической точки зрения иногда бывает лучше рассуждать об обратном элементе, нежели о делении. Наконец, 1/Ь существует только если Ь Ф О, поскольку уравнение 0 • х = 1 не имеет решений. Держа эти замечания в уме, вернемся к Ъп. Как всегда, п — фиксированное натуральное число. Пред- Предположим, что а е Zn. Назовем а е Zn обратным к а, а сам эле- элемент а обратимым, если в Zn справедливо равенство: а-а = 1. Ясно, что 0 не имеет обратного в Zn. К сожалению, 0 может быть не единственным элементом в Zn, не имеющим обратно- обратного. Необходимо рассмотреть этот момент очень подробно. Предположим, что а £ Zn имеет обратный элемент а, и посмотрим, что мы с этого будем иметь. Из уравнения а • а = 1 следует, что аа — 1 делится на п. Иначе говоря, aa + kn = l G.1) для некоторого целого к. Равенство G.1) влечет: НОД(а,п) = 1. Таким образом мы заключаем, что если а имеет обратный эле- элемент в Zn, то НОД(а,п) = 1. Верно ли обратное? Для ответа предположим, что а — та- такое целое число, для которого НОД(а, п) = 1. Равенство G.1) подсказывает применить расширенный алгоритм Евклида к числам а яп. Этот алгоритм даст нам такие целые числа а и /?, что аа + п/3 — 1. Полученное уравнение эквивалентно тождеству а • а = 1
§ 5.7. Деление по модулю п 137 в Zn. Значит класс а, найденный с помощью расширенного алгоритма Евклида, является обратным к а в Ъп. Итак, если НОД(а, п) = 1, то а обратим в Zn. Подведем итог в следующей теореме. Теорема обратимости. Класс а обратим в Ъп тогда и только тогда, когда целые а и п взаимно просты. Рассуждения, приведенные выше, являются конструктив- конструктивным доказательством теоремы обратимости, в том смысле, что они представляют собой процедуру для проверки суще- существования обратного элемента и его вычисления, если он есть. Конечно, эта процедура — непосредственное применение рас- расширенного алгоритма Евклида. Например, обладает ли 3 об- обратным в Z32? И если «да», то чему он равен? Применяя рас- расширенный алгоритм Евклида к числам 32 и 3, мы найдем, что НОДC,32) = 1, и 3-11-32 = 1. Так что обратный элемент существует. Переписывание этого уравнения по модулю 32 приводит к равенству: 3-11 = 1. Итак, 11 — обратный элемент к 3 в Z32- Множество обратимых элементов в Zn, обозначающееся символом U(n), играет ключевую роль в главах 9, 10 и 11. По теореме обратимости мы имеем: Для простого числа р множество U(p) вычислить очень лег- легко, потому что в этом случае условие НОД(а,р) равносильно такому: р не делит а. Поскольку это справедливо для всех на- натуральных чисел, меньших р, имеем U(p) = Zp \ {0}. К сожалению, такое простое описание множества U(p) вер- верно только для простого р. Если п — составное и 1 < к < п — его множитель, то НОД(А;,п) = к ф 1, так что к не обра-
138 Арифметика остатков тим в Zn. Два простых примера. С/D) = {Т,з} и {/(8) = {1,3,5,7}. Ключевое свойство множества U(n) состоит в том, что оно содержит произведение любых своих элементов. Более точно, если а и Ь — обратимые классы в Zn, то произведение а • Ъ тоже обратимо в Zn. Это утверждение является очень важ- важным для главы 9, так что проверим его детально. Пусть а — обратный элемент для a, a $ — для Ь в Zn. Тогда обратным к произведению а • Ь будет а • 0. Действительно, (а ■ Ь){а ■ р) = (а ■а)(Ь-~р)=Т-1 = 1. Мы еще будем периодически возвращаться к множеству U(n) в последующих главах. Вернемся к проблеме делимости а на Ь в Zn, с которой мы начинали этот параграф. Прежде всего нам нужно узнать, имеет ли Ь обратный элемент в Zn. Если имеет, то мы най- найдем его с помощью расширенного алгоритма Евклида. Пусть, например, это будет /?. Чтобы разделить а на Ь, мы вычи- вычислим произведение а • /?. Разделим, в качестве примера, 2 на 3 в Ъ%. После применения алгоритма Евклида к 3 и 8 мы име- имеем: НОДC,8) = 1 и 3 сам себе обратен. Поэтому результат деления 2 на 3 в Ze равен 6. Применим результаты этого параграфа к решению линейных сравнений в Zn. Линейное сравнение — это уравнение вида ax = b (mod n), G.2) где а, Ь £ Z. Если бы это было линейное уравнение над веще- вещественными числами, нам следовало бы поделить его на а. По- Попытаемся использовать ту же идею здесь. Предполагая, что НОД(п, а) = 1, мы заключаем (по теореме обратимости), что
Упражнения 139 существует такой а е Z, что аан 1 (mod n). Умножая обе стороны уравнения G.2) на а, получаем: х = аах = ab (mod п), и уравнение решено. Например, для решения сравнения 7х = = 3 (mod 15) мы сначала ищем обратный элемент к 7 по моду- модулю 15. Так как 15 — 2-7 = 1, обратным к 7 по модулю 15 будет —2 = 13 (mod 15). Умножая сравнение 7х = 3 (mod 15) на 13, получаем х = 13 • 3 = 39 = 9 (mod 15), что является искомым решением. Заметим, метод, применяемый к решению линейных срав- сравнений, показывает, что в случае НОД(а, п) = 1 сравнение ах = = b (mod n) имеет одно и только одно решение по модулю п. Иначе говоря, несмотря на бесконечность числа целых, удо- удовлетворяющих данному уравнению, все они сравнимы друг с другом по модулю п. Замечание может показаться баналь- банальным, но это не так. В самом деле, высказывание не верно, если НОД(а, п) Ф 1. Уравнение 2х = 1 (mod 8), например, не имеет решений вовсе. Мы вернемся к этому вопросу в начале главы 8. Упражнения 1. Какие из отношений на множестве Z, выписанных ниже, являются отношениями эквивалентности? A) а~Ь, когда НОД(а,Ь) = 1; B) для фиксированного целого п > 0 отношение опреде- определяется правилом: а ~ Ь тогда и только тогда, когда НОД(а,п) = НОД(Ь,п).
140 Арифметика остатков 2. Найдите вычет числа а по модулю п, если A) а = 2351 и п = 2; B) а = 50121 ип = 13; C) о = 321671 ип = 14. 3. Найдите вычеты каждой из следующих степеней: A) 520 (mod 7); B) 71001 (mod 11); C) 81Ш (mod 13); D) 13216 (mod 19). 4. Найдите остаток от деления 1000! на З300. 5. Определите U{n) и найдите обратные к каждому из его элементов при п = 4, 11 и 15. 6. Решите линейные сравнения: A) 4х = 3 (mod 4); B) Зх + 2 = 0 (mod 4); C) 2х-1 = 7 (mod 15). 7. Покажите, что всякий элемент из ?/C4) является степе- степенью 3. 8. Покажите, что диофантово уравнение х2 — 7у2 = 3 не имеет целочисленных решений. 9. Покажите, что р = 274177 = 1071 • 28 + 1 — простой делитель числа Ферма FF). Указание: Сначала вычислите 1 0718 по модулю р. Для это- этого заметьте, что 1071 = 7 • 9 • 17 и найдите восьмую степень каждого из этих множителей по модулю р, а затем перемножь- перемножьте их. Далее, так как р = 1071 • 28 +1, мы имеем: A071 • 28)8 = 1 (modp). С другой стороны, A071 • 28)8 = 10718 • 264 (mod p).
Упражнения 141 Замените 10718 в последней формуле на его вычет и сравните с предыдущим уравнением. Тот факт, что р делит FF) выте- вытекает отсюда как по волшебству. Следующие три задачи — близкие родственники. Мы вер- вернемся к ним в контексте теста на простоту для чисел Мерсен- на (см. § 10.4). 10. Рассмотрим множество чисел вида а + 6\/3, где а и Ъ целые. Оно обычно обозначается символом Z[\/3]. Поскольку элементы множества Z[\/3] — вещественные числа, их можно складывать и перемножать. Покажите, что для a,/? G Z[\/3] их сумма (а + 0) и произведение (af3) тоже лежат в Z[\/3]. 11. Определим отношение на Z[\/3] следующим образом. Зафиксируем целое число п и возьмем а,0 £ Z[\/3]. Скажем, что а = /3 (mod n), если и только если найдется такое число 7 £ Z[\/3], что а — 0 = wy. Покажите, что это отношение является отношением эквивалентности на Z[\/3]. 12. Для фиксированного натурального тг обозначим через ^n [V3] фактормножество Z[\/3] по отношению эквивалентно- эквивалентности из предыдущего упражнения. Предположим, что а и 0 — классы из Zn[\/3]- Проверьте, что правила задают корректно-определенные операции на Zn[\/3]. 13. В этом упражнении мы покажем, что число вида 4п + 3 не может быть представлено как сумма двух квадратов целых чисел. A) Покажите, что квадрат любого целого числа срав- сравним с 0 или 1 по модулю 4. B) Используя A), покажите, что для целых жиг/ сумма х2 + у2 сравнима с 0, 1 или 2 по модулю 4.
142 Арифметика остатков C) Учитывая B), докажите, что целое число вида 4п + 3 не может равняться сумме двух квадратов целых чисел. Этот результат — частный случай теоремы, сформулиро- сформулированной Ферма в письме Робервалю A640 год). Ферма знал также, что никакое из простых чисел вида 4п + 1 не может быть записано в виде суммы двух квадратов. За подробностя- подробностями обратитесь к [49] ([Д.13]). Смотрите также упражнение 14 главы 6. 14. Напишите программу на основе алгоритма вычисления степеней по модулю п, описанного в § П.2 приложения. Исход- Исходные данные состоят из трех натуральных чисел: а, к и n; a выводиться должен вычет числа ак по модулю п. Этот алго- алгоритм будет основой всех приложений следующих глав.
Глава 6. Индукция и Ферма Теперь, зная базисные факты арифметики остатков, мы готовы вернуться к изучению простых чисел. Основной ре- результат этой главы — очень полезная теорема, впервые дока- доказанная Ферма. Она непосредственно следует из более сильной теоремы теории групп, которую мы изучим в главе 9. Здесь же мы, следуя указаниям Ферма, даем ее прямое доказатель- доказательство методом математической индукции. С описания такого метода доказательства мы и начнем. §6.1. Ханой! Ханой! Думали ли Вы когда-нибудь над головоломкой под назва- названием «Ханойские башни»? Она состоит из трех деревянных стержней, закрепленных на деревянной основе и некоторого числа деревянных дисков (из шести в моем комплекте). В цен- центре каждого диска есть отверстие для нанизывания на стер- стержень. Обозначим стрежни А, В и С. Диаметры дисков раз- различны; в начале игры все они располагаются на стержне А в порядке убывания размеров: самый большой внизу, а самый маленький — наверху башни.
144 Индукция и Ферма Цель задачи: переместить всю башню со стержня А на стержень С, используя В как перевалочный пункт, подчиня- подчиняясь при этом следующим правилам: A) за один ход можно переместить только один диск; B) больший диск нельзя класть поверх меньшего. Обратите внимание! По первому правилу с любого стержня за один ход можно снять и переместить только верхний диск. Поэтому, если убрать из головоломки перевалочный стержень В, задача станет неразрешимой. Стоит попытаться решить головоломку самостоятельно, чтобы освоиться с ней. Практически это можно сделать до- довольно быстро. Но вопрос, который мы хотим поставить, вы- выходит за рамки стандартной игры: можем ли мы найти фор- формулу минимального числа ходов, требуемых для перемещения всей башни из п дисков со стержня А на стержень С? Есте- Естественно, мы предполагаем, что диски перемещаются соглас- согласно правилам. Поставленный вопрос имеет важнейшее значение для тех, кто готов поверить следующему рассказу. Под высоким куполом одного индийского храма находятся три шпиля, густо усеянные алмазами, как пчела бархатным ворсом. В момент сотворения мира Бог поместил на один из них 64 диска чистого золота: наибольший — внизу, а осталь- остальные — сверху, так, что получилась башня. Он дал задание главному жрецу храма переставить диски согласно правилам, сформулированным выше. Когда вся башня из 64 дисков бу- будет полностью перенесена на один из оставшихся шпилей, Бог вернется и положит конец миру. Итак, чтобы узнать, когда наступит конец света, Вам достаточно решить задачу о мини- минимальном числе перемещений 64 дисков. Оставив в стороне схоластические аспекты проблемы, вер- вернемся к ее «деревянной» постановке, с которой мы начали. Ес- Если в игре только один диск, его достаточно просто перенести со стержня А на стержень С. При этом мы не нарушаем ника- никаких правил, и головоломка решена. В этом случае достаточно
§ 6.1. Ханой/ Ханой/ 145 одного перемещения. Теперь предположим, что у нас есть два диска. Сначала мы перенесем меньший диск на стержень В; затем больший диск можно переставить на стержень С; и на- наконец, меньший — на С, так что он окажется сверху большого диска. Итак, для решения головоломки с двумя дисками до- достаточно трех ходов. Если у Вас есть такая головоломка, то неплохо было бы подсчитать количество перемещений, кото- которое Вы сделаете, переставляя башню из четырех, а потом из пяти дисков. Теперь поразмышляем над общим случаем головоломки из п дисков. Рассуждение станет легче для восприятия, если мы опишем его в виде диалога между учеником и учителем. Учитель: Предположим, что диски пронумерованы свер- сверху вниз числами 1, 2, ... , п, так что наименьший диск имеет номер 1 (и находится вверху), а наибольший — п (он внизу стержня). Что нужно сделать, чтобы можно было передвинуть диск п? Ученик: Чего? Учитель: Мы хотим передвинуть диск п, но все осталь- остальные диски стоят на нем. Что же нам делать? Ученик: Переставить все диски, которые стоят на самом большом? Учитель: Это так, нам следует перенести п — 1 дисков, которые лежат на n-ом. Но нельзя забывать, что мы хотим пе- переложить все диски на стержень С, а диск п при этом должен оказаться в самом низу стержня. Куда же нам деть осталь- остальные п — 1? Ученик: На стержень В? Учитель: На стержень В. Однако возникают проблемы. Ученик: Они всегда есть. Учитель: Правила! По первому из них мы можем менять
146 Индукция и Ферма положение только одного из дисков; а по второму — диски должны быть нанизаны на стержень В в порядке убывания их размеров. Как нам передвинуть п — 1 меньших диска с А на В? Ученик: Нам следует передвигать только один диск за один ход, не нарушая правил. Учитель: А более точно? Ученик: Было бы здорово, я полагаю, чтобы задача с п—1 дисками была уже решена. Тогда можно было бы передвинуть башню из п — 1 дисков со стержня А на В. Учитель: А что будет служить перевалочным пунктом? Ученик: Может, это С? Учитель: Точно. Подведем итог. Нам нужно переставить диск п на С. Но мы можем это сделать только после переме- перемещения на стержень В (п — 1) дисков, которые находятся над ним. Сделаем это, играя с п — 1 меньшими дисками, исполь- используя С в качестве перевалочного пункта. Таким образом весь набор из п — 1 дисков будет передвинут со стержня А на В. Осуществив это, мы свободно перенесем n-ый диск на С. Ученик: Как же мы потом передвинем оставшиеся п — 1 диски на С так, чтобы они правильно легли поверх диска п? Мне кажется, что нам нужно опять поиграть в п — 1 диски, чтобы передвинуть их с В на С? Учитель: Такая игра может занять много времени, но это именно тот путь, который приводит к победе. Заметим, что нам пришлось решить головоломку с п — 1 дисками два- дважды. В первый раз мы переместили башню, состоящую из п—1 дисков с А на В (используя С в качестве перевалочного). Это нам освободило n-ый диск, и мы переместили его на С. Нако- Наконец, мы еще раз сыграли в игру сп-1 дисками, перемещая их со стержня В на С (используя А как перевалочный). В ре- результате все п дисков оказались нанизанными на стержень С, и ни одно правило не было нарушено.
§ 6.1. Ханой! Ханой! 147 Ученик: Ух! Учитель: Это еще не конец! Ученик: Не конец? О, Боже! Учитель: Мы хотели найти наименьшее число ходов, не- необходимое для решения головоломки, разве нет? Ученик: Полагаю, все еще хотим. Учитель: Чтобы облегчить дальнейшие рассуждения, обо- обозначим через Т(п) минимальное число ходов, требуемых для решения головоломки с п дисками. Как мы увидели, для ее ре- решения нам сначала нужно передвинуть п — 1 дисков, лежащих над n-ым. Сколько ходов нам потребуется для этого? Ученик: Чтобы переместить их на стержень В, нам нуж- нужно решить головоломку сп-1 дисками, не так ли? И нам, я полагаю, потребуется по крайней мере Т(п — 1) ходов. Учитель: Поскольку мы перенесли п — 1 меньших дисков на стержень В, стержень С остался пустым. Поэтому теперь можно передвинуть последний n-ый диск на С. Много ли нам нужно ходов для этого? Ученик: Один? Учитель: Естественно; и сколько теперь всего затрачено ходов от начала игры? Ученик: Уф, Т(п - 1) + 1? Учитель: Что дальше? Ученик: Нам еще нужно перетащить п—1 меньших дисков с В, где они сейчас находятся, на С, накрыв ими диск п. Учитель: Так, а сколько передвижений потребуется для достижения этой цели? Ученик: Не меньше, чем Т(п — 1), разумеется, потому что это минимальное число ходов в головоломке сп-1 дисками.
148 Индукция и Ферма Учитель: Итак, мы видим, что с момента начала игры всего нам предстоит сделать Т(п—1)+1+Т(п—1) = 2Т(п—1)+1 ходов. Более того, если мы внимательно посмотрим на прове- проведенные рассуждения, мы убедимся, что нет никакой возмож- возможности полностью решить головоломку за меньшее число ходов. Так что такое Т(п)? Ученик: Минимальное число ходов, требуемое для реше- решения головоломки по перемещению п дисков со стержня А на С. Учитель: Да, но как нам вычислить Т(п), предполагая, что мы уже знаем Т(п — 1)? Ученик: Т(п) = 2Т(п - 1) + 1? Учитель: Отлично! Теперь подсчитаем минимальное чи- число ходов, необходимых для решения задачи с шестью диска- дисками. Конечный результат диалога — формула Т{п) = 2Г(п - 1) + 1. Заметим, что эта формула не говорит нам чему равно Т(п). Для вычисления Т(п) мы должны сначала найти Т(п — 1). Зна- Значит, Т(п) вычисляется многократным применением форму- формулы. Например, для вычисления ТF), нам сначала необходи- необходимо найти ТA),ТB),... ,ТE). Поскольку, как мы уже усвоили, ТA) = 1, то ГB) = 2ГA) + 1 = 3. Действуя так же, мы имеем ТC) = 7, ТD) = 15, ТE) = 31 и ТF) = 63. Следовательно, для решения моей головоломки, состоящей из 6 дисков, мне нужно по крайней мере 63 хода. А как насчет головоломки в индийском храме? Для ответа на этот вопрос нужно вычислить ТF4), довольно страшная задача.
§ 6.1. Ханой! Ханой! 149 Равенство Т(п) = 2Т(тг — 1) + 1 называется рекуррентной формулой. Другими словами, чтобы найти Т(п) нужно приме- применить ее несколько раз, на каждом этапе используя в качестве исходных данных результат предыдущего вычисления. Вы мо- можете спросить, как доказать эту формулу? Ответ: приведен- приведенный диалог и является ее доказательством. Допускаю, что оно изложено в такой форме, которая может показаться чересчур экзотичной, чтобы называться математическим доказатель- доказательством. Но этот недостаток легко лечится; все что нужно сде- сделать — это выбрать основные моменты из диалога и перепи- переписать их на привычном математическом жаргоне. Тот факт, что мы получили только рекуррентную форму- формулу, не остановит наших попыток найти конечное выражение для Т(п), т.е. такое, из которого Т(п) получается простой под- подстановкой значения переменной п. Если Вы обратили внима- внимание на значения Т(п), вычисленные выше, то можете дога- догадаться о вероятном виде искомой формулы. Но раз конечная формула будет угадана, перед нами встает новая проблема: мы должны будем доказать, что она работает при всех значе- значениях переменной п. Заметим, что проверяя гипотетическую формулу для какой-то таблицы чисел, можно убедиться лишь в том, что она верна именно для чисел таблицы, но не более. Для доказательства формулы мы вводим метод математиче- математической индукции. Быть может, Вы думаете: «Зачем беспокоиться о поиске другой формулы? Что плохого в рекуррентной?» Резонные во- вопросы. В конце концов, для определения Т(п) при фиксиро- фиксированном п нам всего-то и нужно, что вычислить с ее помощью Г@),... ,Т(п). Да компьютер сделает это очень быстро! Чего же еще желать? Как раз здесь пути математики и вычисли- вычислительной математики расходятся. Несколько преувеличивая, мы могли бы сказать, что вычи- вычислительная математика предназначена для грубого, силового подхода к работе: делать настолько эффективно, насколько
150 Индукция и Ферма получается; а математика, наоборот, нацелена на поиск пути достижения результата с минимальными вычислениями. Ко- Конечно, это, в действительности, две стороны одной медали. В реальном мире проблемы решаются органическим синтезом математики и вычислительной математики. Так что эти нау- науки чаще сотрудничают, чем конкурируют. § 6.2. Математическая индукция Слово «индукция» используется в математике в очень спе- специфическом техническом значении. Иногда к нему добавляют определение математическая, как в названии данного пара- параграфа. Однако это слово имеет множество значений, 12 из ко- которых приведены в «Оксфордском словаре английского язы- языка». Математическое значение слова «индукция» происходит из традиционного его значения, употребляемого в логике, которое близко к повседневному употреблению. Ссылаясь на «Оксфордский словарь английского языка», «индукция» в та- таком смысле — это «процесс выведения общего закона или принципа из наблюдаемых частных случаев.» Значит, когда мы додумались до конечной формулы для Т(п), используя значения ТA),... ,ТF), мы применяли индукцию. Конечно, Вы делаете подобные вещи ежедневно, на протяже- протяжении всего дня. Но в математике индукция иногда приводит к ужаснейшим ошибкам (впрочем, по мнению автора, такое случается и в повседневной жизни). Часто цитируемый пример ошибки, к которой может при- привести индукция, — это утверждение Ферма, высказанное Фре- никлю, о том, что все числа вида F(n) = 2 2"
§ 6.2. Математическая индукция 151 будут простыми. Он, вероятно, проверил гипотезу для п = = 0,1,2,3 и 4, что довольно просто, а затем сделал обобщение. Следующее число FE) = 225 + 1 =4294967297 довольно велико, если все, что у вас есть — это ручка и бу- бумага. Был ли Ферма напуган размерами числа, или допустил ошибку при его вычислении? Вероятно, мы этого никогда не узнаем. Но, как мы видели, FE) на самом деле составное чи- число, и Эйлер был первым, кто в 1738 году нашел его делитель (мы будем подробно изучать эти числа в главе 10). С тех пор ошибка Ферма стала предупреждением об опасности обобще- обобщений на основе нескольких примеров. В XVII столетии ряд математиков, и Ферма среди них, на- начали проявлять беспокойство по поводу отсутствия доверия к результатам, доказанным по индукции. Это побудило их развить метод, который очень подходит для доказательства фактов, продиктованных обобщением численных эксперимен- экспериментов, т.е. результатов, полученных ординарной индукцией. Но- Новый метод получил известность как математическая индук- индукция, или конечная индукция, или рекуррентное рассуждение. В трактате Б. Паскаля «Об арифметическом треугольнике», опубликованном в 1654 году, мы найдем объяснение метода математической индукции практически в современном виде. Конечно, «арифметический треугольник» из названия тракта- трактата сейчас известен как треугольник Паскаля. Паскаль, чело- человек многих талантов, был первоклассным геометром и физи- физиком. Именно он изобрел первую механическую машину для вычислений (калькулятор). Его «Мысли» — классика француз- французской литературы. Вернемся на время к Ханойским башням. Внимательно рас- рассматривая значения ТA),... ,ТF), вычисленные в предыду- предыдущем параграфе, мы заметим, что каждое из них удовлетворяет условию: Т(п) + 1 = 2". Поэтому естественно предположить,
152 Индукция и Ферма что минимальное число ходов, требуемое для передвижения башни из п дисков в головоломке «Ханойские башни», равно 2п — 1. Отметим, что в действительности мы имеем бесконеч- бесконечно много утверждений, пронумерованных натуральными чи- числами. А наш эксперимент говорит нам только, что эти утвер- утверждения справедливы для п = 1,..., 6 и не более. Пример с Ханойскими башнями типичен. Изучение (конеч- (конечной) таблицы с экспериментальными данными задачи часто подсказывает нам гипотетическое утверждение S(n), и мы ожидаем, что оно справедливо для всех натуральных чисел. Математическая индукция предлагает систематический под- подход к доказательству многих таких утверждений. Принцип математической индукции. Предположим, что для каждого натурального числа п есть утверждение S(n), обладающее следующими двумя свойствами: A) 5A) верно; B) если S(k) верно для натурального к, то S(k+l) также верно. Тогда S(n) справедливо для всех натуральных п. Попробуем понять, почему этот принцип работает. Пред- Предположим, у нас есть утверждение, обладающее свойствами A) и B) принципа. Второе из них говорит нам, что если для не- некоторого натурального к мы можем показать справедливость S(k), то S(k + 1) тоже будет верным. По первому свойству 5A) — истинное утверждение. Поэтому, применяя B) при к = 1, мы заключаем, что 5B) верно. Теперь, зная об истинно- истинности 5B), мы опять можем применить B), но на этот раз при к = 2. Получим истинность 5C). Таким образом, выбрав про- произвольное натуральное п, мы можем продолжать действовать подобным образом пока не достигнем S(n). Поэтому утвер- утверждение должно быть справедливым для каждого положитель- положительного целого п.
§62 Математическая индукция 153 Конечно, это рассуждение не доказывает принципа мате- математической индукции. На самом деле, в некотором смысле, ов вообще не может быть доказан.' Анри Пуанкаре (Poincaxe), один из известных математиков XIX столетия, очень хорошо объясняет этот момент: «Суждение, на котором основан способ рекуррент- рекуррентного рассуждения, может быть изложено в других формах; можно сказать, например, что в бесконеч- бесконечно большом множестве различных натуральных чи- чисел всегда есть одно, которое меньше других. Мож- Можно легко переходить от одного выражения к дру- другому и таким образом создавать иллюзию дока- доказательства законности рассуждения путем рекур- ренции. Но в конце концов всегда придется остано- остановиться; мы всегда придем к недоказуемой аксиоме, которая, в сущности, будет не что иное, как пред- предположение, подлежащее доказательству, но только переведенное на другой язык.» Так почему мы все же верим в строгость принципа индукции? Снова обратимся к Пуанкаре за помощью: «Здесь сказывается только утверждение могущест- могущества разума, который способен постичь бесконечное повторение одного и того же акта, раз этот акт оказался возможным однажды.» По той же причине мы без труда осознаем бесконечность мно- множества целых, хотя начинаем знакомство с ними с нескольких чисел. Цитаты Пуанкаре мы взяли из его классической книги «Наука и гипотеза» ([36], [Д. 11]). Применим принцип к проблеме «Ханойские башни». Утвер- Утверждение, которое мы собираемся проверить, говорит, что ми- минимальное число перемещений Т(п), требуемых для решения головоломки «Ханойские башни» из п дисков, равно 2п — 1. Или
154 Индукция ц Ферма короче: мы хотим доказать, что Г(п) = 2п — 1. Согласно прин- принципу математической индукции, это будет верно для любого натурального п, если мы сможем доказать две вещи. Сначала мы должны проверить формулу для головоломки с 1 диском. Но мы уже убедились, что ТA) = 1 и 2п — 1 = 1. Так что первый шаг уже сделан. На математическом жаргоне он на- называется базой индукции. Далее нужно сделать индуктивный переход, или шаг ин- индукции, т.е. показать, что если утверждение верно для какого- то А; ^ 1, то оно верно и для к + 1. Индуктивный переход основывается на двух моментах: • Предположение о том, что утверждение верно для неко- некоторого к ^ 1. В нашем примере это означает гипотетиче- гипотетическое равенство Т(к) = 2к — 1 для некоторого к ^ 1. Такое предположение называется предположением индукции. • Какая-нибудь связь между Т{к) и Т(к + 1). В примере — это рекуррентное соотношение: Т(к + 1) = 2Т(к) + 1. Итак, предположим, что Т(к) = 2к — 1 для некоторого к ^ 1. Из рекуррентной формулы следует, что Т(к + 1) = 2Т(к) + 1 = 2Bfc - 1) -(-1 = 2fc+l - 2 + 1 = 2fc+l - 1. Таким образом, условие B) принципа математической индук- индукции в нашем случае тоже верно. Теперь принцип математиче- математической индукции дает: так как A) и B) справедливы, то Т(п) = = 2п — 1 для всех натуральных п. Зная минимальное число ходов, приводящих к решению за- задачи «Ханойские башни», мы можем теперь подсчитать остав- оставшееся время до конца света. Напомним, что башня в индий- индийском храме состоит из 64 дисков. Поэтому общее число пере- перемещений, которые жрецу надо сделать со дня творения, равно ТF4) = 264 — 1. Мало этого, нам еще хочется знать, сколько времени займет этот процесс. Предположим, что жрецу для
§ 6.3. Теорема Ферма 155 перестановки одного диска потребуется, в среднем, 30 минут. Диски, разумеется, имеют разные размеры. Нам не сказано насколько велик максимальный из них, но, по-видимому, не маленький, поскольку создал его сам Господь. А так как они, к тому же, сделаны из золота, то должны быть довольно тя- тяжелыми. Поэтому полчаса — достаточно осторожное предпо- предположение. Величина 264 имеет порядок 1019, и несложные вы- вычисления показывают, что жрецу потребуется около 1014 лет, чтобы перенести все диски. Таким образом, считая, что от Большого Взрыва прошло около 1011 лет, можно прикинуть, сколько еще осталось. Эта легенда впервые была опубликована в Париже в 1883 году, одновременно с головоломкой, неким Н. Клаусом из кол- колледжа в Ли-Соу-Стэйна. Имя человека и название колледжа — в действительности, анаграммы имени Люка д'Амьен, препо- преподавателя лицея Святого Людовика. Это математик Ф. Е. А. Люка (F. E. A. Lucas), придумавший как головоломку, так и рассказ о ее происхождении. Его книга «Математические развлечения» 1894 года стала классикой предмета. Люка занимался и тео- теорией чисел. В 10 и 11 главах мы разберем два теста неприво- неприводимости, которые он открыл. Используя один из них, Люка, не прибегая к помощи компьютеров (которых тогда еще и не было), показал, что число Мерсенна Af A27) = 170141183 460 469 231731687 303 715 884105 727 является простым. § 6.3. Теорема Ферма Теорему, которую мы хотим доказать, иногда ласково на- называют «малой теоремой Ферма». Она говорит, что если р простое число и а — любое целое, то р делит ар — а. Частный случай этой теоремы известен многие сотни лет, но Ферма, ка-
156 Индукция и Ферма жется, был первым, кто доказал теорему в полной общности. Начнем с перевода формулировки теоремы на язык сравнения. Теорема Ферма. Пусть р — положительное простое число и а — целое; тогда ар = a (mod p). Чтобы доказать теорему с помощью математической ин- индукции, нам нужно найти утверждение Р(п), к которому мож- можно применить метод. Вот оно: пр = п (mod p) для натурального п. Отметим, что утверждение Р(п) говорит о верности сравне- сравнения только для натуральных чисел, т.е. положительных целых п. Таким образом, мы не доказываем теоремы в полной общ- общности. Однако, любое целое число сравнимо по модулю р с каким-то неотрицательным целым, меньшим р. Поэтому до- достаточно проверить теорему для 0 ^ а ^ р — 1. В частности, теорема будет доказана, если показать справедливость утвер- утверждений Р(п) для всех п ^ 1. Разумеется, РA) истинное высказывание, поскольку 1Р = 1. Таким образом, база индукции выполнена. Для индуктивного перехода от Р(п) к Р(п + 1) нам нужно выявить связь меж- между этими утверждениями. Она обеспечивается биномиальной теоремой. Доказательство становится намного проще, если мы выделим из него вспомогательное утверждение, в действи- действительности являющееся вариантом бинома Ньютона для целых чисел по модулю р. Лемма. Пусть р — положительное простое число, а и Ь — целые; тогда {a + b)p = a? + V (mod p).
§ 6.3. Теорема Ферма 157 Доказательство леммы. Как следует из формулы бинома Ньютона, (а + Ь)р = аР + ЬР + V (Л аР-1Ъ\ t=i W Таким образом, для доказательства леммы достаточно пока- показать, что ?)ар-'Ь* = 0 (modp). А это, в свою очередь, будет немедленно следовать из делимо- делимости биномиальных коэффициентов (?) на р при 1 ^ i ^ р — 1. По определению, г! Поскольку биномиальные коэффициенты — целые числа, знаменатель дроби должен делить числитель. Кроме того, ес- если 1 ^ % ^ р — 1, то р не является делителем числа г!. Поэтому сомножитель р из числителя дроби не может сократиться ни с каким сомножителем знаменателя. Значит, знаменатель обя- обязан делить произведение (р — 1) • • • (р — z + 1). Отсюда (?) — число кратное р, что и требовалось доказать. Теперь можно вернуться к доказательству теоремы Ферма. Предположение индукции: пр = п (mod p) для некоторого натурального п. В качестве индуктивного перехода нам нужно показать, что (п + 1)р = п + 1 (mod p). По лемме (п + 1)р = пр + 1р = пр + 1 (mod p). По предположению индукции, пр можно заменить на п. Про- Проделав это, мы получаем: (п + 1)р = пр + 1 = п + 1 (mod p), что мы и хотели показать.
158 Индукция и Ферма Наиболее интересных приложений теоремы Ферма придет- придется подождать до следующей главы. А сейчас будем довольство- довольствоваться использованием теоремы для упрощения вычислений степеней по модулю р, проблемы, с которой мы уже сталки- сталкивались. Сначала переформулируем теорему в более удобной форме. Согласно теореме, если р простое число, а а — целое, то аР = а (mod р). Предположим теперь, что а не делится на р. Тогда, ввиду простоты р, числа аир взаимно просты, и из теоремы обратимости следует, что а обратимо по модулю р. Пусть а' — обратный к а элемент. Умножая на а' сравнение ар = a (mod p), имеем а'а • ap~l = a'a (mod p). Но а'а = 1 (mod р), и окончательно ap~l = I (mod p). Именно этот вариант уравнения из теоремы Ферма мы будем исполь- использовать в дальнейшем чаще всего. Для будущих ссылок сфор- сформулируем его в виде утверждения. Теорема Ферма. Пусть р — положительное простое число и а — целое, не делящееся на р; тогда аР~1 = 1 (mod p). Задача, к которой мы хотели бы применить теорему Фер- Ферма, звучит следующим образом. Для трех данных натураль- натуральных чисел а, к и р таких, что к > р — 1, найти вычет ак по модулю р. Если р делит а, то вычет равен 0. Поэтому без ограничения общности можно предполагать, что р не делит а. Разделим к нар—1 с остатком: к = (р—1)д+г, где q и г — неотрицательные целые числа, причем 0 ^ г < р — 1. Следовательно, ак = о(р- По теореме Ферма ар~1 = 1 (mod р). Значит, ак s ar (mod p), и достаточно делать вычисления только для экспонент, пока- показатель которых меньше р — 1.
§ 6.4. Вычисление корней 159 Приведем наглядный пример, демонстрирующий силу этой простой редукции. Допустим, нам нужно найти вычет числа 25432675 по МОДуЛЮ 13. Рецепт предыдущей главы предписывал вычислить несколько степеней двойки по модулю 13, прежде чем что-нибудь получить. Посмотрим, что будет, если при- применить теорему Ферма. Сначала найдем остаток от деления 5432 675 на 13 — 1 = 12. Он равен 11. Затем, рассуждая, как в предыдущих абзацах, мы имеем = 2U (mod 13). Непосредственный счет дает окончательный ответ: 211 = 7 (mod 13). §6.4. Вычисление корней Остается еще один вопрос, который нужно рассмотреть. Существует ли натуральное к, меньшее, чемр—1, при котором ak = 1 (mod р) для всех целых чисел а, не делящихся на р? Можно попытаться ответить на него следующим образом. Хорошо известная теорема алгебры говорит, что полиноми- полиномиальное уравнение не может иметь корней больше, чем его сте- степень. А поскольку, по предположению, сравнение ак = 1 (mod p) справедливо для всех целых чисел, взаимно простых с р, кор- корни полиномиального уравнения хк = 1 в Ър — это 1,... ,р — 1. Таким образом, уравнение имеет р — 1 разных корня. По упо- упомянутой теореме получаем оценку: к ^ р — 1. Так что ответ на поставленный вопрос отрицателен. Хотя эти рассуждения корректны, они прячут истинную природу проблемы в теореме, с помощью который мы решили этот вопрос. Когда мы говорим о полиномиальном уравнении, мы обычно имеем ввиду уравнение с вещественными или ком- комплексными коэффициентами. А под «корнем» мы подразумева- подразумеваем вещественный или комплексный корень. Но коэффициенты
160 Индукция и Ферма уравнения из нашего рассуждения, как и его корни, суть эле- элементы "Lp. Вот где собака зарыта! Нам нужно показать, что теорема об оценке числа корней полиномиального уравнения справедлива и в этом случае. Может, это опять неоправдан- неоправданный педантизм? Отнюдь нет. Хотя эта теорема верна в случае простого модуля, для составного модуля она ложна\ Теорема. Пусть f(x) — многочлен степени к с целы- ми коэффициентами и старшим коэффициентом 1. Если р — простое число, то f(x) имеет не более к корней в Ър. Прежде чем погрузиться в доказательство, мы должны об- обратить внимание на два момента. Во-первых, модуль должен быть простым, поскольку нам нужно следующее свойство: если ab = 0 (mod р), то или а = 0 (mod р) или 6 = 0 (mod p). За- Заметим, что это, фактически, фундаментальное свойство про- простых чисел, сформулированное на языке сравнений. Во-вто- Во-вторых, мы выделим один иэ моментов доказательства в отдель- отдельную лемму, которую докажем в конце этого параграфа. Лемма. Пусть h(x) — многочлен степени т с целыми коэффициентами. Для любого целого числа а найдется мно- многочлен q(x) степени т — 1, удовлетворяющий условию: h{x) = (x-a)q{x)+h(a). Докажем теорему индукцией по п (степени многочлена) с помощью этой леммы. Если п = 1, то f(x) = х + Ь. И соот- соответствующее уравнение имеет только одно решение —Ь в Zp. Итак, многочлен степени 1 имеет единственный корень в Zp, и теорема в этом случае верна. Предположим теперь, что любой многочлен степени к — 1 со старшим коэффициентом 1 имеет не более к — 1 корня в Zp. Это предположение индукции. Мы хотим показать, что дан- данное предположение влечет аналогичное утверждение для мно- многочлена степени к со старшим коэффициентом 1.
§ 6 4. Вычисление корней 161 Итак, пусть f(x) — многочлен степени к с целыми коэф- коэффициентами, старший из которых равен 1. Если f(x) не имеет корней в Zp, то доказывать нечего, ибо 0 ^ к. Такие многочле- многочлены в действительности существуют; соответствующий пример приведен после доказательства теоремы. Следовательно, мы можем предполагать, что f(x) имеет корень а € Zp; иначе говоря, /(а) =0 (mod р). По лемме f(x) = (x-a)q(x)+f(a), D.1) где степень q(x) равна к — 1. Так как старшие коэффициенты многочленов f(x) и х — а равны 1, то же самое справедливо и для многочлена q{x). Значит, мы можем применить индуктив- индуктивное предположение к q{x). Редуцируя равенство D.1) по модулю р, мы получаем f{x) = {x- a)q(a) (mod р). D.2) Пусть /? ф а — еще один корень f(x) в Zp. Это означает, что /(/?) = 0 (mod р), но а - Р ф 0 (mod p). Заменяя ж на а в D.2), и используя эти сравнения, мы имеем 0 = /03) = {0- a)q(p) (mod p). Так как р простое, то это влечет сравнение q(fi) = 0 (mod p). Мы заключаем, что если /3 — корень многочлена /(ж), отлич- отличный от а, то Р является и корнем q(x) в Zp. Иначе говоря, у f(x) только на один корень больше (в Zp), чем у q(x). А по предположению индукции у последнего многочлена не более, чем к—1 различных корней в Zp. Следовательно, f(x) не может иметь больше к разных корней, что завершает индуктивное доказательство. Рассмотрим несколько примеров. Первый из них — много- многочлен f(x) = х2 4- 3. Он удовлетворяет всем условиям теоремы,
162 Индукция и Ферма но не имеет корней по модулю 5. Действительно, единственно возможные вычеты квадратов целых чисел по модулю 5 — это 1 и 4, откуда немедленно следует наше заявление. Это как раз тот пример, о котором упоминалось в доказательстве теоремы. Второй пример иллюстрирует, что происходит, когда мы пытаемся искать корни многочлена по составному модулю. Корни многочлена х2 — 170 в 2зв5 — это 95, 150, 235 и 290, что легко проверить. Итак, мы представили полиномиальное уравнение степени 2 с четырьмя корнями. Это, конечно, не противоречит нашей теореме, поскольку 385 составное число. Для завершения доказательства теоремы необходимо про- проверить лемму. Мы опять будем делать это по индукции. Од- Однако, если попытаться применить принцип индукции в том виде, который сформулирован в §6.2, мы убедимся, что в до- доказательстве откроется дырочка. Позже посмотрим, к какой проблеме может привести такое доказательство. Мы вернемся к лемме, сформулировав принцип индукции в более тонкой форме. Индуктивная гипотеза принципа в форме из §6.2 предполагает, что S(k) верно для некоторого целого k ^ 1. Но практически, когда мы пытаемся доказывать утвер- утверждение S(k 4- 1), опираясь на S(k), мы уже знаем об истин- истинности 5A), 5B),..., S(k — 1). Поэтому предположение о спра- справедливости не только 5(fc), но и 5A), 5B),..., S(k — 1) будет небольшой и естественной модификацией метода. Зато для до- доказательства S(k + 1) мы сможем использовать более полную информацию. Формулировка принципа, включающая это до- дополнение, выглядит следующим образом. Принцип математической индукции. Предположим, что для каждого натурального числа п сформулировано ут- утверждение S(n), обладающее следующими двумя свойствами: A) 5A) верно; B) если 5A),..., S(k) верны для натурального к, то ут- утверждение S{k + 1) также верно. Тогда S(n) справедливо для всех натуральных п.
§ 6.4. Вычисление корней 163 Пользуясь новой формулировкой принципа, лемму теперь можно легко доказать индукцией по степени m многочлена h(x). Если т = 1, то h(x) = ах + Ь для некоторых целых а и Ь. Поэтому h(x) = ax + b = a(x — а) + аа + b = а(х — а) 4- h(a). Предположим теперь, что утверждение леммы выполнено для любого многочлена с целыми коэффициентами, степень кото- которого не превосходит m — 1. Исходя из этого предположения, мы хотим показать, что лемма справедлива для многочлена h(x) с целыми коэффициентами степени т. Пусть h(x) = атхт 4- dm-ix™'1 Н Ь aix 4- а0, где ат ф 0. Обозначим через д(х) разность h(x)-amxm-1(x-a), то есть д(х) = (am_i + ama)xm~l + am_2a;m~2 + - + ац + а0. Ясно, что степень многочлена д(х) меньше или равна m — 1. Заметим, однако, что степень будет в точности равна m — 1, только если am_i + ата ф 0, но у нас нет способа узнать так это, или нет. Поэтому возможна ситуация, когда степень д(х) меньше, чем т — 1. Это как раз тот момент, когда мы сталки- сталкиваемся с трудностями при использовании принципа индукции в форме, сформулированной в § 6.2. Заметим также, для буду- будущих ссылок, что д(а) = h(a). Так как степень многочлена д(х) меньше или равна т — 1, предположение индукции влечет д{х) =j{x){x-a)+g{a),
164 Индукция и Ферма где j(x) — многочлен с целыми коэффициентами, степень ко- которого на единицу меньше, чем степень д(х). Ввиду равенства д(а) = h(a), получаем д(х) = j(x)(x - a) 4- h(a). Но h(x) = д(х) + атхт~х(х — а), так что h(x) = {j(x) 4- пых'1) (х-а) + h(a). Наконец, j(x)+amxm~l имеет степень в точности т—1, потому что степень j(x) меньше т —1. Это завершает доказательство леммы. Есть более прямое доказательство этой леммы, использую- использующее деление многочленов. Как и прежде, пусть h{x) — много- многочлен степени т с целыми коэффициентами. Разделив h(x) на х — а, мы найдем такие многочлены q(x) и г (ж), что h{x) = д{х){х -а)+ г(х), D.3) причем либо г(х) = 0, либо его степень меньше степени х — а. Значит, его степень должна быть равной 0, т.е. г (ж) = с — целое число. Заменим в уравнении D.3) х на а: h(a) = q(a)(a — а) 4- с = с. Таким образом, мы можем переписать D.3) в виде: h(x) = q{x)(x -a)+ /i(a), что завершает доказательство.
Упражнения 165 Упражнения 1. Методом математической индукции докажите, что A) число га3 + 2п делится на 3 при любом натуральном значении переменной га; B) если п > 0 — нечетное целое число, то n3— n делится на 24; C) выпуклый n-угольник имеет ровно п(п — 3)/2 диа- диагоналей; D) для каждого целого n ^ 1 имеет место соотношение к{к + 1) = п(п + 1)(п + 2)/3. к=1 2. Числа, заданные формулой hn = 1 4- 3n(n — 1) (n G N), называются гексагональными. Их название обязано тому фак- факту, что они, по определенным правилам, могут быть размеще- размещены на сторонах правильного шестиугольника. A) Вычислите сумму первых п гексагональных чисел для п = 1,2,3,4 и 5. Обобщите полученные резуль- результаты до гипотетической формулы суммы первых п гексагональных чисел. B) Докажите найденную формулу методом математи- математической индукции. 3. Напомним, что fn — n-ое число Фибоначчи, если /о = 1, /i = 1 и /„ = /n_i + fn-2- Индукцией по п покажите, что где а и р — корни квадратного уравнения х2 — х — 1 = 0. 4. Рассмотрим последовательность целых положительных чисел 5о, 5i, 5г, 5з,..., определенных рекуррентным соотноше- соотношением: So = 4 и Sk+i = Sl-2.
166 Индукция и Ферма Пусть ш = 2 + \/3 и w = 2 — \/3- Индукцией по п покажите. 5 on on n = ОТ + ССГ . 5. Принцип математической индукции очень полезен, но обращаться с ним нужно крайне осторожно. Например, ниже приведено доказательство абсурдного утверждения: в конеч- конечном множестве цветных мячиков все мячи должны быть одно- одного цвета. Найдите в нем ошибку. Если в множестве только один мяч, то утвержде- утверждение, очевидно, справедливо. Теперь предположим, что в любом множестве из к мячей все шары одного цвета. Мы хотим показать, что все мячи в множе- множестве из fc-fl мяча тоже покрашены в один цвет. Обо- Обозначим мячи этого множества через mi,...mk+i- Удалив из него тк+i, мы получим множество, со- содержащее к мячей и, по предположению индукции, мячи mi,... ,тк одного цвета. Поэтому нам оста- осталось только показать, что цвет m^+i совпадает с цветом мячей из множества {mi,...,mfc}, и дока- доказательство будет закончено. Но {m2,...,mm-i} — множество, которое тоже насчитывает к элемен- элементов и, по индуктивному предположению, состоит из мячей одного цвета. Следовательно, тк+i име- имеет тот же цвет, что и, скажем, тг- Итак, мячи окрашены в один цвет. 6. Допустим, что у нас есть Зп монет, одна из которых фальшивая. Известно, что фальшивая монета легче осталь- остальных. Вам дали чашечные весы без гирь. Так что у Вас только один способ взвешивать монеты: положить несколько монет на левую чашку, еще несколько — на правую и посмотреть, какая из частей тяжелее. Покажите с помощью математиче- математической индукции, что для определения фальшивой монеты будет достаточно п взвешиваний.
Упражнения 167 7. Пусть рп — п-ое простое число. Например, р\ = 2, рг = 3 и рз = 5. Мы хотим выразить через п верхнюю оценку для рп. A) Покажите, что pn+i ^ Pi • • *Рп + 1. B) Используя это неравенство и математическую ин- индукцию, докажите, что n-ое простое число удовле- удовлетворяет неравенству: рп ^ 22". 8. Покажите, используя теорему Ферма, что 270 4- З70 де- делится на 13. 9. Пусть а — натуральное число, записанное в десятичной системе счисления. Покажите, что последние знаки в записях о5 и а совпадают. 10. С помощью теоремы Ферма докажите, что для любого целого п число п3 4- (п 4-1K 4- (п 4- 2K делится на 9. 11. Пусть р — простое число, отличное от 2 и 5. Покажите, что р делит какое-нибудь число из множества {1; И; 111; 1111; 11111;...}. Указание: По теореме Ферма число lC — 1 делится на р, если р > 5. Случай р = 3 нужно разобрать отдельно. 12. Покажите, что уравнение ж13 4- 12ж + 13у6 = 1 не имеет целочисленных решений. Указание: Редуцируйте уравнение по модулю 13 и приме- примените теорему Ферма. 13. Найдите остатки от деления A) 3950! на 2251; B) 1939" на 191. 14. Цель этой задачи — показать, что для простого числа видар = 4п4-1 найдутся целые а и 6, сумма квадратов которых о2 4- Ь2 делится на р. Пусть ж и у — два целых числа, взаимно простых с р. Положим о = хп и b = yn. Тогда (с2-62)(с24-62)=х4п-у4п.
168 Индукция и Ферма A) Используйте теорему Ферма для проверки делимо- делимости ж4п — у4п на р. B) Учитывая полученный результат, покажите, что р делит либо а2 + Ь2, либо а2 — Ь2. Если р делит а2 + Ь2, то все доказано. Поэтому, рассуждая от противного, можно считать, что для любых целых х и у разность х2п — у2п = а2 — Ь2 делится на р. В частности, это должно быть верно, если х — произвольное целое, а у = 1, т.е. х2п — 1 делится на р при любом целом х. C) Покажите, что сравнения х2п = 1 (mod p) (для лю- любого целого п) противоречат теореме § 6.4. D) Собирая вместе доказанные утверждения, заверши- завершите решение задачи. Ферма знал более сильный факт: любое простое число ви- вида An 4-1 может быть представлено в виде суммы квадратов двух целых чисел (см. [49], [Д.13]). Сравните этот результат с упражнением 13 главы 5. 15. В этом упражнении мы описываем доказательство Эй- Эйлера теоремы Ферма. В отличие от доказательства самого Ферма, оно не использует математическую индукцию. Пусть р — простое число и о — элемент из U(p) = Zp \ {0}. Рассмо- Рассмотрим подмножество 5 = < о, 2а,..., (р — 1)а >. A) Покажите, что элементы подмножества S различны. B) Покажите, что множество S содержит р — 1 элемент и выведите отсюда, что S = U(p). C) Покажите, что B) влечет равенство: (р — 1)! = 1 • 2 • • • (р — 1), правая часть которого — произведение всех элементов из 5. D) Покажите, что, с другой стороны, произведение всех элементов из 5 можно записать в виде ар-1 • (р — 1)!. E) Из C) и D) выведите теорему Ферма.
Упражнения 169 16. Пусть р — простое, и о — целое число, не делящееся нар. Покажите, что обратным к а в Zp является элемент ар~2. 17. Пусть р = 4fc + 3 — положительное простое число. Для данного целого а рассмотрим уравнение х2 = о (mod p). A) Подберите аир, для которых это уравнение не име- имеет решений. B) Покажите, что если уравнение имеет корень, то он сравним с ±afc+1 по модулю р. Указание: Если уравнение имеет корень, то найдется такое целое число 6, что Ь2 = a (mod p). Поэтому (afc+1J = 64(fc+1)=64fc+2-62 (modp). Теперь B) немедленно следует из теоремы Ферма. 18. Следуя упражнению 16, напишите программу, которая по данным р и а вычисляет обратный к а по модулю р. Прежде всего, программа должна проверять, делится ли а на р. 19. Пусть р = 4fc -+• 3 — положительное простое число. На- Напишите программу, которая по данному р и натуральному чи- числу о находит решение уравнения х2 = a (mod p). Напомним, что из упражнения 17 следует, что если это уравнение имеет решение 6, то b = ±afc+1 (mod p). Так что программа должна вычислять вычет ак+1 по модулю р и проверять, является ли этот вычет решением данного уравнения. В качестве резуль- результата программа должна выдавать решение уравнения или со- сообщение о том, что уравнение решений не имеет. Это частный случай упражнения 8 главы 12. 20. Некоторые задачи теории чисел приводят к простым числам, удовлетворяющим уравнению ap~l = I (mod p2) для какого-то целого а. Напишите программу, которая по дан- данным целым г и а > 1 ищет все простые р от а + 1 до г, удо- удовлетворяющие этому уравнению. Сначала программа должна
170 Индукция и Ферма с помощью решета Эратосфена определять все простые числа, не превосходящие г. Затем из найденных простых нужно бу- будет выбрать те, которые удовлетворяют выписанному выше сравнению. Между а + 1иг = 105, есть только 2 простых чи- числа, удовлетворяющих сравнению, при о = 2, 5, 10 и 14; и 5, если о = 19.
Глава 7. Псевдопростые числа Здесь мы увидим, как теорема Ферма помогает выяснить, является ли данное число составным, не раскладывая его на множители. Глава заканчивается обсуждением стратегий раз- различных систем символьных вычислений, используемых для про- проверки чисел на простоту или разложимость. § 7.1. Псевдопростые числа Как утверждает теорема Ферма, для целого числа о, не деля- делящегося на простое р, имеет место сравнение: ар~~1 = 1 (modp). Предположим, что нам нужно узнать, является ли данное не- нечетное число п простым. Допустим также, что нам как-нибудь удалось найти целое 6, не делящееся на п и удовлетворяющее условию: 6n-1 ф 1 (modn). В этом случае теорема Ферма го- говорит нам, что п не может быть простым. Такое число Ь будем называть свидетелем разложимости п. Итак, у нас есть метод тестирования числа на наличие нетривиальных делителей, при котором не нужно разлагать число на множители. Трудность применения этого теста заключается в том, что он не будет работать до тех пор, пока мы не найдем свидетеля; а это тре-
172 Псевдопростые числа бует везения. Но как мы дальше увидим, более вероятно, что такой свидетель будет найден, чем не найден. Заметим, что для поиска свидетеля Ь нам нет нужды про- просматривать все целые числа. Действительно, поскольку мы ра- работаем с сравнениями по модулю п, можно ограничить поиск числами Ь, лежащими в интервале 0 ^ b ^ п — 1. Имеет смысл исключить еще 0 (поскольку Ь не должно делиться на п) и 1 (ибо I"" = 1 (mod n) для всех п). Более того, из нечетности п вытекает сравнение: (n — 1)" = 1 (mod n), т.е. сравнение вы- выполнено и для п — 1. Итак, можно предполагать, что искомый свидетель b удовлетворяет неравенству: 1 < b < п — 1. Прежде, чем мы будем применять этот тест, сформулируем его в виде теоремы. Тест на разложимость. Пусть п — нечетное нату- натуральное число. Если найдется такое целое число Ь, что A) 1<Ь<п-1,и B) Ьп~1ф1 (modn), то п — разложимое, т.е. составное число. Напомним, что повторяющиеся единицы Щп) определяют- определяются формулой 10п-1 R(n) = 9 Другими словами, это целые числа, в десятичной записи кото- которых встречаются только 1 (см. упражнение 5 главы 3). Мы уже видели, что Щп) составное число для разложимых п. Однако для простого числа 229 у нас до сих пор не было возможности определить, простое ли RB29) или составное. Кроме того, это число состоит из более чем 200 знаков, так что раскладывать его на множители слишком утомительно. Вместо этого при- применим тест на разложимость с b = 2. С помощью системы символьных вычислений легко найти вычет 2я'229'" по моду-
§ 7.1. Псевдопростые числа 173 лю ДB29). Он равен 104516500584333397781753768885982835488612737233884898 570848288405666898406290825536552313452374268256539145 527606121567512885287283062854774198632697829520351103 663852079821692412346101479040743884170069248576365931 1045450329217 и не сравним с 1 по модулю ДB29). Так что ДB29) — состав- составное число. Поскольку нас больше интересуют простые числа, нежели составные, резонно задать вопрос: можно ли использовать те- теорему Ферма для доказательства простоты чисел? Более точ- точно, предположим, что п — положительное нечетное целое чи- число, для которого bn~l = I (mod n) при некотором целом числе Ь, удовлетворяющем неравенству 1 < b < п — 1; обязательно ли п будет простым числом? Лейбниц, знаменитый философ и математик, полагал, что ответ утвердительный. Он использо- использовал это соображение как тест на простоту, всегда выбирая 2 в качестве b для упрощения вычислений. К сожалению, Лейбниц был неправ. Например, имеет ме- место сравнение 2340 = 1 (mod 341) и, по Лейбницу, число 341 должно быть простым. Но 341 = 11-31 — составное. Числа, дающие ложный «положительный» результат в этом тесте, из- известны под именем псевдопростых. Выражаясь точнее, нечет- нечетное составное натуральное число п, удовлетворяющее сравне- сравнению 6п~г =. 1 (mod n) для некоторого целого Ь из интервала A; п — 1), называется псевдопростым по основанию Ь. Следо- Следовательно, 341 — псевдопростое по основанию 2. Несомненно, тест Лейбница все-таки полезен, хотя и не аб- абсолютно точен. Для малых целых, выбранных наугад, тест ча- чаще дает правильный ответ, чем ошибается. Чтобы убедиться в этом, подсчитаем простые и псевдопростые числа по осно- основанию 2, не превышающие какой-нибудь подходящей грани. Например, между 1 и 109 лежит 50847544 простых и только
174 Псевдопростые числа 5597 псевдопростых по основанию 2. Таким образом, число из этого промежутка, выдержавшее тест Лейбница, будет скорее простым, нежели псевдопростым по основанию 2. Кроме того, мы применяли этот тест только по одному основанию, а если использовать несколько разных оснований, то количество неопределяемых составных чисел значительно уменьшится. Например, З340 = 56 (mod 341), так что 3 свиде- свидетельствует о разложимости числа 341. На самом деле, между 1 и 109 находится 1272 псевдопростых по основаниям 2 и 3 и только 685 псевдопростых по основаниям 2, 3 и 5. Так как нам нужно примерять тест только по конечному числу оснований: 2, 3, ..., п — 2, возникает вопрос: может ли п быть составным, оставаясь псевдопростым по всем этим осно- основаниям? Пусть п > 2 и предположим, что bn~l = I (mod n) для некоторого 1 < b < п — 1. Поскольку bn~l = b • bn~2, то из предположения следует обратимость b по модулю п. А те- теорема обратимости утверждает, что такое возможно лишь в случае НОДF, п) = 1. Поэтому, если п — составное, а один из делителей Ь делит п, то bn~l ф 1 (modn). В частности, любой делитель п свидетельствует о разложимости п. Итак, ответ на вышесформулированный вопрос отрицателен. Какой можно сделать вывод из результатов этого парагра- параграфа? Напомним, что наша цель — найти эффективный способ определения, является ли данное конкретное число простым. Если число имеет небольшой делитель, его можно найти с по- помощью алгоритма деления методом проб из главы 3. Так что на практике тест на разложимость следует применять только в том случае, когда предварительные рассмотрения показали, что данное число не имеет малых делителей. Таким образом, вопрос, заданный выше, имеет небольшой практический ин- интерес. Было бы быстрее найти делитель, чем пытаться про- проверить, является ли большое число п псевдопростым по всем основаниям между 2 и п — 2. Однако, как мы увидим в следу- следующем параграфе, это не конец истории.
§ 7.2. Числа Кармайкла 175 Перед тем, как мы к нему перейдем, может быть полез- полезно заметить, что в некоторых книгах количество тгA09) про- простых чисел, не превосходящих 109, считается меньшим, чем приведенное нами. Это не опечатка, поскольку все эти книги приводят одно и то же число. Ошибочная информация о коли- количестве простых обязана своим появлением датскому матема- математику Бертельсену (Bertelsen), который в 1893 году насчитал на 56 простых чисел меньше, чем в действительности. По иро- иронии судьбы, предполагалось, что его вычисления направлены на исправления неточностей в неких таблицах. Вместо этого он допустил ошибку, которую можно найти в книгах, опубли- опубликованных до 1993 года. § 7.2. Числа Кармайкла Как мы показали в конце последнего параграфа, состав- составное число п не является псевдопростым по основанию Ь, если числа п и Ь имеют общий нетривиальный делитель. К сожале- сожалению, эта информация не очень полезна. Практически, чтобы ограничить объем вычислений разумными рамками, мы вы- выделяем несколько оснований среди небольших простых чисел. И если наименьший делитель числа п очень большой, то все выбранные основания будут взаимно просты с п. Поэтому во- вопрос, который нам стоило бы задать, нужно нацелить на усо- усовершенствование метода, приведенного в конце предыдущего параграфа. А именно, может ли составное нечетное число п быть псевдопростым по всем взаимно-простым с ним основа- основаниям &? Забегая вперед, скажем, что ответ: «да». Заметим, что если число Ь взаимно просто с п, то сравне- сравнение bn = b (mod n) равносильно bn~l = I (mod n). Это по- позволяет поставить вопрос чуть более строго: существует ли такое нечетное натуральное п, которое, будучи составным, удовлетворяет сравнениям Ьп = Ь (mod n) для всех целых 6? Одно из преимуществ такой формулировки вопроса заключа-
176 Псевдопростые числа ется в отсутствии необходимости каких-либо предваритель- предварительных предположений относительно Ь. Первым привел пример таких чисел п математик Р. Д. Кармайкл (Carmichael) в сво- своей работе, опубликованной в 1912 году ([10]). Поэтому они и называются числами Кармайкла. Поскольку эти числа играют важную роль во многом из того, о чем нам еще предстоит говорить, хорошо бы дать их формальное определение. Нечетное натуральное п называется числом Кармайкла, если оно составное и bn = b (mod n) для всех целых Ь. Конечно, достаточно проверить это сравнение только для чисел, удовлетворяющих неравенству 1 < b < п — 1, поскольку мы работаем по модулю п. Как показал сам Кармайкл, наименьшее из чисел, откры- открытых им, равно 561. В принципе, мы можем проверить этот факт, исходя из определения. Однако даже для относительно небольших чисел такая процедура очень длинна и скучна. Дей- Действительно, чтобы доказать прямо из определения, что число 561 — число Кармайкла, нам потребуется проверять истин- истинность сравнения б561 = Ь (mod 561) для b = 2,3,4,..., 559, т.е. всего — 557 раз. Это может показаться не такой уж тяжелой работой, если у Вас есть компьютер, а что делать, когда у Вас такой кандидат на число Кармайкла: 349 407 515 342 287 435 050 603 204 719 587 201? Самое подходящее время вернуться к доске и мелу (т.е. тео- теоретическим изысканиям). Попытаемся найти обходной путь для доказательства того, что 561 — число Кармайкла. Прежде всего заметим, что оно довольно легко раскладывается на простые множители: 561 = 3 • 11 ■ 17. Теперь мы хотим проверить сравнение Ь561=6 (mod 561) B.1)
§ 7.2. Числа Кармайкла 177 для некоторого целого Ь. Наша стратегия состоит в демон- демонстрации делимости разности Ь561 — Ь на 3, 11 и 17. Так как это различные простые числа, то лемма из главы 3 говорит нам, что тогда их произведение тоже должно делить б561 — Ь. Но упомянутое произведение равно 561, так что B.1) этим будет доказано. Чтобы сделать нашу стратегию рабочей, нужно исхитрить- исхитриться доказать, что Ь561 — b делится на каждый простой множи- множитель числа 561. В этом нам поможет теорема Ферма. Мы при- приведем подробное доказательство делимости разности на 17, оставив случаи делимости на 3 и на 11 в качестве полезных и необременительных упражнений. Итак, мы хотим доказать, что 17 делит разность б561 — 6, или, на языке сравнений: б561 =Ь (mod 17). B.2) Необходимо рассмотреть два случая. 1) Число 17 делит Ь. В этой ситуации обе части уравне- уравнения B.2) сравнимы с 0 по модулю 17, т.е. сравнение справед- справедливо. 2) Число 17 не делит Ь. Тогда теорема Ферма влечет равен- равенство: б16 = 1 (mod 17). Прежде чем применить это наблюдение к сравнению B.2), нам нужно найти остаток от деления 561 на 16. Но 561 = 35-16 + 1, поэтому б561 = (б16K5 • Ь = Ь (mod 17). Заметим, теорема Ферма так сильно сократила наши вычисле- вычисления благодаря тому, что остаток от деления 561 на 16 оказался равным 1. Удачно, что остатки от деления 561 на 2(= 3 — 1) и на 10(= 11 — 1) тоже равны 1. Так что вычисления, которые Вам предстоит сделать для 3 и 11 — дословное повторение проведенных. Успех нашей стратегии обязан двум свойствам числа 561. Первое: деление 561 на разность каждого из его делителей и единицы дает в остатке 1. Второе: каждый простой делитель
178 Псевдопростые числа числа 561 входит в его разложение на простые множители с кратностью 1. Что же это: нам очень повезло с выбором при- примера, или числа Кармаикла встречаются крайне редко? Ре- Реальность оказывается еще более удивительной. Существует бесконечно много чисел Кармаикла, и все они обладают свой- свойствами, столь облегчившими наши вычисления с 561. Характе- Характеристика чисел Кармаикла, вытекающая из этого наблюдения, впервые была дана А. Корселтом (A. Korselt) за пятнадцать лет до публикации работы Кармаикла на эту тему. Однако, Корселт не привел никаких новых примеров чисел, которые удовлетворяли бы описанным им свойствам. Теорема Корселта. Нечетное натуральное число п явля- является числом Кармаикла, если и только если для каждого его простого делителя р выполнены следующие два условия: A) р2 не делит п; B) р — 1 делит п — 1. Покажем для начала, что если число п удовлетворяет усло- условиям A) и B) теоремы, то оно является числом Кармаикла. Для этого мы применим стратегию, разработанную в преды- предыдущих вычислениях с числом 561. Предположим, что р — про- простой делитель числа п. Покажем, что Ьп = Ь (mod p). B.3) Если b делится на р, то обе части в B.3) сравнимы с нулем по модулю р, и доказывать нечего. Предположим теперь, что р не делит Ь. Как следует из теоремы Ферма, ЬР~г = 1 (mod p). Прежде чем применить это соображение к B.3), мы должны найти остаток от деления п на р— 1. Но р— 1 делит п— 1 согласно условию B) теоремы, т.е. п — 1 = (р — l)q для некоторого целого q и п = {п - 1) + 1 = (р - l)q + 1. Значит Ьп = {V-y • Ь = Ь (modp),
§ 7.2. Числа Кармаикла 179 где второе сравнение следует из теоремы Ферма. Суммируя все вышесказанное, получаем, что если р простой делитель числа п, то bn = b (mod р) для любого целого Ь. Ввиду условия A) теоремы, п = рх ■ ■ -рк, где рь... ,рк — попарно различные простые числа. Мы уже видели, что Ьп — Ь делится на каждое из этих чисел, а поскольку все они раз- различны, то, учитывая лемму § 3.6, можно сделать вывод: Ьп — Ь делится на их произведение Р\ • • • Pk — п. Иначе говоря, Ьп = = b (mod n). Поскольку вычисления справедливы для любого целого 6, то п является числом Кармаикла. Теперь следует показать, что всякое число Кармаикла удо- удовлетворяет условиям A) и B) теоремы. Сделаем это методом «от противного». Сначала, предположив, что п число Кармаи- Кармаикла, получим, что делимость п на р2 приводит к противоре- противоречию. Этим мы докажем, что числа Кармаикла удовлетворяют условию A) теоремы. Так как п — число Кармаикла, противоречие получится, если мы найдем целое Ь, для которого Ьп ф Ь (mod n). Положим Ь = р. Тогда Но р не делит рп~ 1 — 1, поэтому р2 не может делить рп —р. Иначе говоря, рп ф. р (modn). Это противоречит предположению о том, что п — число Кармаикла. Для завершения доказательства нам осталось показать, что числа Кармаикла удовлетворяют условию B) теоремы. Однако для этого необходима теорема о примитивных корнях, кото- которая будет доказана только в § 11.3. К сожалению, для проверки данного натурального п на принадлежность к числам Кармаикла с использованием теоре- теоремы Корселта, нам нужно разложить число на простые множи- множители, что довольно сложно в случае больших чисел. Тем не ме- менее, довольно часто бывает так, что очень большие числа Кар- Кармаикла имеют много небольших делителей. Например, число с 36 знаками, приведенное в начале этого параграфа, являет-
180 Псевдопростые числа ся наименьшим числом Кармайкла с 20 простыми делителями. Его разложение на множители выглядит следующим образом: 11131719-29-31-37-41-43-61-71-73-97101-109113151-181193-641. Используя одну из программ символьных вычислений, те- теперь можно быстро проверить, что это действительно число Кармайкла. Другие примеры чисел Кармайкла можно найти в упражнении 3, где приведено семейство целых, содержащее несколько таких чисел. В своей работе 1912 года Кармайкл выписал 15 чисел, на- названных его именем, а затем добавил: «этот список можно про- продолжать бесконечно». То есть он имел в виду, что существует бесконечно много чисел Кармайкла. Однако скоро стало яс- ясно, что доказательство этого утверждения — очень трудная проблема. Причина высокой сложности задачи в том, что та- такие числа достаточно редко встречаются. Например, между 1 и 109 лежит только 646 чисел Кармайкла, в то время как простых — 50847534. Проблема, наконец, была решена Аль- фор дом (Alford), Гранвиллем (Granville) и Померанцем (Ротег- апсе) в 1994 году. Они показали, что на самом деле существует бесконечно много чисел Кармайкла. Побочный продукт это- этого результата имеет отношение к тестированию простоты и будет обсуждаться в § 7.4. § 7.3. Тест Миллера В §7.1 мы видели, что теорема Ферма предлагает спо- способ проверки разложимости данного числа, не требуя поиска его делителей. Однако этот подход не всегда работает и, ес- если очень не повезет, может потерпеть неудачу. Далее (§7.2) мы пытались объяснить, что означает «невезение» в данном контексте. Было обнаружено, что числа Кармайкла ведут се- себя как простые, в том смысле, что мы не можем установить
§ 7.3. Тест Миллера 181 их разложимость методом, развитым в конце параграфа. Но этот тест можно так усовершенствовать, что его не смогут обмануть даже числа Кармайкла. Новый тест ввел Миллер (G. L. Milller) в 1976 году. Пусть п > О — нечетное целое. Выберем целое число Ь, удо- удовлетворяющее неравенству 1 < Ь < п — 1, и назовем его, как и раньше, основанием. Поскольку п — нечетное, п — 1 долж- должно быть четным числом. Первый шаг теста Миллера состоит в определении такого показателя к ^ 1, для которого п—1 = 2kq, где q не делится на 2. Иначе говоря, мы должны найти наи- наибольшую степень двойки, делящую п — 1, и соответствующее частное q. Далее тест вычисляет вычеты по модулю п у следующей последовательности степеней: w, ь2* ь2"-1*, ь2Ч Разберемся, какими свойствами обладает эта последователь- последовательность в случае простого п. Итак, пока не будет оговорено осо- особо, п — простое число. Теорема Ферма говорит нам, что о2"" = Ь" = 1 (mod n). Значит, если п — простое, то последний вычет в последова- последовательности всегда равен 1. Конечно, единица среди вычетов может встретиться и раньше. Пусть j — наименьший показа- показатель, для которого bVq = 1 (mod n). Если j' ^ 1, то По предположению, число п — простое и (так как оно делит разность квадратов б2*9—!.) делит либо b2' q~ 1,либоЬ27 9+1- С другой стороны, в силу выбора показателя j, число п не может делить Ь23' д — 1. Остается только одна возможность: п — делитель числа Ъ23 q + 1, т.е. b23 q = —I (mod n).
182 Псевдопростые числа Эти рассуждения показывают, что в случае простого п среди последовательности степеней: bq b2q b2k~lq найдется по крайней мере одна, сравнимая с —1 по модулю п. Хорошо, но не слишком. Дело в том, что наше рассуждение основывалось на предположении: j > 0. Если j = 0, то bq = = 1 (mod n). А у нас нет простого способа разложения числа bq — 1 на множители, поскольку q нечетно. Значит, если п — простое, то с последовательностью вычетов по модулю п, о которой мы говорили, должно произойти одно из двух: либо первый же вычет равен 1, либо среди них появится п—1. В про- противном случае (не будет ни того, ни другого) число п должно быть составным. Последовательность вычетов, используемая в тесте Милле- Миллера, довольно легко вычисляется, потому что каждый вычет (за исключением первого) — квадрат предыдущего. В самом деле, bVq = ib2' lq) при j > 1. Отсюда вытекает, что как только в последовательности вычетов по модулю п встретится п — 1, все остальные вычеты будут равны 1. У нас появился еще один тест, который позволяет нам по- показать разложимость данного числа, но работающий только при удачном стечении обстоятельств. Тем не менее, тест Мил- Миллера более эффективен, нежели предложенный в §7.1. Что- Чтобы понять почему, заметим, что последовательность степе- степеней, выписанная для псевдопростого п по основанию Ь, должна иметь член, сравнимый с 1 по модулю п. А так как п не про- простое, то существует хороший шанс, что этой степени не будет предшествовать другая, сравнимая с п — 1. В этом случае тест Миллера обнаружит разложимость числа. Приведем алгоритм, реализующий тест Миллера. Тест Миллера Ввод: нечетное натуральное п и основание Ь, где 1 < b < п—1.
§ 7.3. Тест Миллера 183 Вывод: одно из двух сообщений: «п составное» или «ничего определенного сказать нельзя». Шаг 1. Последовательно делим п — 1 на 2 пока не получим не- нечетного частного. В результате найдем положительное целое к и нечетное q, для которых п — 1 = 2kq. Шаг 2. Присвоим г нулевое значение, а г значение вычета bq по модулю п. Шаг 3. Если г = 0 и г = 1, или г > О, а г = п — 1, то вывести сообщение: «ничего определенного сказать нельзя»; в противном случае переходим к шагу 4. Шаг 4. Увеличиваем г на 1 и заменяем г на г2 по модулю п; переходим к шагу 5. Шаг 5. Если г < к, то возвращаемся к шагу 3; в противном случае выдаем сообщение: «п составное». В случае неопределенного сообщения возможны две ситу- ситуации: либо п простое, либо составное. К сожалению, второй случай реально встречается. Рассмотрим несколько примеров, причем начнем с хороших новостей. Мы видели в §7.1, что 341 — псевдопростое по основанию 2, так что это хороший объект для теста Миллера. Прежде всего, 340 = 22 • 85. Те- Теперь нам нужно найти вычеты по модулю 341 у степеней 2 с показателями 85 и 170: 2s5 = 32 (mod 341), 2im = 32Z = 1 (mod 341). Это позволяет тесту дать заключение: число составное. Более наглядный пример дает нам число Кармаикла 561. Подвергнем его тесту Миллера по основанию 2. Простые вы- вычисления показывают, что 560 = 24 • 35. Выпишем последова- последовательность вычетов степеней 2 по модулю 561: Степени Вычеты 35 263 2-35 166 2 • 35 67 23-35 1 И в этом случае тест сообщит нам о разложимости числа.
184 Псевдопростые числа Хотя 561 — число Кармайкла, мы обнаружили, что оно составное, применив наименьшее из возможных оснований. Теперь плохие новости. Применим тест Миллера по основа- основанию 7 к 25. Поскольку 24 = 23 • 3, последовательность степеней и их остатков имеет вид: Степени Вычеты 3 18 2-3 24 2^-3 1 Так что тест здесь не может сказать ничего определенного, несмотря на то, что разложимость числа 25 видна невооружен- невооруженным взглядом. Конечно, основание 7 мы выбрали не случайно, если бы основанием было 2, то тест бы узнал в двадцати пяти составное число. Пусть п > 0 — нечетное целое число и1 <Ь <п — 1. Если п составное, а тест Миллера его не распознал, то оно называ- называется строго псевдопростым по основанию Ь. Вышеприведен- Вышеприведенный пример показывает, что 25 — строго псевдопростое по основанию 7. Легко увидеть, что строго псевдопростое число по основанию b является псевдопростым по этому же основа- основанию (см. упражнение 7). Как мы уже отметили, число 25 не является строго псев- псевдопростым по основанию 2. Наименьшее строго псевдопро- псевдопростое число по основанию 2 — это 2047. Более того, суще- существует только 1282 строго псевдопростых чисел по основа- основанию 2, лежащих между 1 и 109, что дает хорошее представле- представление об эффективности данного теста. Конечно, можно при- применять тест Миллера по нескольким основаниям, что суще- существенно увеличит его эффективность. Например, наименьшее строго псевдопростое одновременно по основаниям 2, 3 и 5 — это 25 326001. Более того, не существует «строго Кармайкловских чисел». Это следует из результата М. О. Рабина (Rabin). Теорема Рабина. Пусть п > 0 — нечетное натуральное число. Если тест Миллера, примененный к п для более, чем
§ 7.4. Тестирование простоты 185 п/4 оснований, лежащих между 1 и п — 1, не распознает в п составного числа, то п — простое. За подробностями можно обратиться к [39], или к [28]. Не стоит и говорить, что в случае больших п применение теста Миллера по п/4 основаниям займет очень много времени. Во- Вопреки этому замечанию, наиболее практичные тесты на про- простоту, как мы увидим в следующем параграфе, основываются на теореме Рабина. § 7.4. Тестирование простоты и системы символьных вычислений Многие системы символьных вычислении имеют простую команду для проверки, является ли данное число простым. Са- Самое удивительное при этом, что ответ выдается почти мгно- мгновенно, даже если проверяемое число было довольно большим. Так происходит из-за того, что большинство программ осно- основаны на тесте Миллера, применяемом по большому числу осно- оснований. Рациональное зерно в таком использовании теста Миллера прорастает из теоремы Рабина. Пусть п — нечетное состав- составное число. Основание Ь между 1 и п — 1 выберем случайным образом. Из теоремы Рабина следует, что вероятность неопре- неопределенного результата при применении теста Миллера к п и b не превосходит п/4 _ 1 п ~ 4" Так что правдоподобно предположение: число п в этом случае будет составным с вероятностью 1/4. Если теперь выбрать к различный оснований, то вероятность станет равной 1/4*. По- Поэтому, беря все больше и больше оснований, мы можем сделать вероятность сколь угодно малой.
186 Псевдопростые числа Эти рассуждения приводят к вероятностному тесту Ра- Рабина на простоту. Поскольку он вероятностный, нам нужно решить, насколько малой должна быть вероятность ошибки. Предположим, нам нужно, чтобы вероятность ошибки не пре- превосходила е, и пусть к — такое натуральное число, для ко- которого 1/4* < е. Тогда тест Рабина выбирает к оснований и применяет тест Миллера по каждому из них. Из вышеприве- вышеприведенных рассуждений вытекает, что в случае неопределенного ответа на тест Миллера по всем этим основаниям вероятность того, что проверяемое число все же окажется составным, бу- будет меньше или равна 1/4*, т.е. меньше требуемого е. Как же выбираются основания? Конечно, удобнее было бы брать основания поменьше, иначе вычисления, необходимые для те- теста Миллера, будут занимать слишком много времени. Как правило, выбирают первые к положительных простых чисел. Естественно, мы хотим быть абсолютно уверены в том, что числа, прошедшие тест, будут простыми. Для этого необходи- необходимо выбрать е очень маленьким. Например, пусть е = 10~20. Так как 1/440 — величина порядка 10~24, нам нужно выбрать 40 оснований, чтобы вероятность ошибки была меньше 10~20. Допустим, что в качестве оснований выбрали 40 первых про- простых чисел. К сожалению, есть число Кармайкла (из 397 зна- знаков), для которого тест Миллера дает неопределенный ответ, если в качестве оснований берутся простые числа, не превос- превосходящие 300 (см. [5]). А так как существует ровно 62 таких простых числа, тест, проверяя упомянутое число Кармайкла по всем основаниям, которые мы выберем, будет выдавать не- неопределенный ответ! Посмотрим как выполняется тест Рабина в одной широко известной системе символьных вычислений. Конечно, каждая программа использует ей одной свойственную стратегию. На- Например, Maple V.21 проверяет простоту в три этапа. Сначала 1 Maple™ — пакет компьютерных программ по символьным вычисле- вычислениям, разработанный Waterloo Maple Software, Inc.
§ 7.4. Тестирование простоты 187 подбираются простые делители тестируемого числа, не пре- превосходящие 103. Если таких делителей не обнаружено, то про- программа применяет тест Миллера по основаниям 2,3,5,7 и 11. А в последнюю очередь проверяется, что данное число не от- относится ни к одному из следующих семейств: ^ + l) для 3<fc<9, или (u + l)(fcu + l) для 5<fc<20. Причиной необходимости последнего этапа служит информа- информация о том, что в этих семействах найдено довольно много стро- строго псевдопростых чисел по тем основаниям, которые исполь- используются программой (см. [38]). Тем не менее, составное число 12 530 759 607 784 496 010 584 573 923 определяется Мар1е'ом как простое. Его наименьший простой делитель равен 286472803. В более поздних версиях Maple'a тест на простоту был модифицирован, так что теперь это чи- число правильно идентифицируется как составное. Axiom 1.12 применяет другую стратегию: подбирает коли- количество оснований в зависимости от числа, которое собирает- собирается тестировать. Было показано, что тест, используемый Ax- Axiom 1.1, правильно обнаруживает простоту чисел, если они меньше, чем 341550071728321 (см. [26]). Для чисел, выходя- выходящих за эту границу, Axiom 1.1 в качестве оснований для теста Миллера использует 10 наименьших простых чисел. Подобно Maple, эта программа делает дополнительные проверки для чисел, считающихся особенно неприятными. И этот тест не совершенен; он дает сбой на составном числе из 56 знаков. Сначала можно подумать, что стратегии, выбранные для этих программ, дадут «совершенные» тесты, стоит только по- подобрать подходящие основания. Но печальная истина в том, 2Axiom — зарегистрированная торговая марка NAG (Numerical Algo- Algorithms Group), Ltd.
188 Псевдопростые числа что это невозможно сделать даже теоретически. Одно из след- следствий, вытекающих из работы Альфорда, Гранвилля и Поме- Померанца над числами Кармайкла, состоит в следующем: «Для любого конечного набора оснований найдется бесконечно много чисел Кармайкла, строго псевдо- псевдопростых по всем этим основаниям.» Итак, следует остерегаться категоричных утверждений о простоте числа, руководствуясь тестом Миллера, применяе- применяемым по фиксированному числу оснований. Возможный выход из создавшейся ситуации был реализован в Axiom 2.2. Теперь программа, учитывая размер тестируемого числа, увеличива- увеличивает число оснований. Для числа из 2к десятичных знаков про- программа берет примерно к оснований, повышая тем самым точ- точность теста. Подробности о тестировании простых чисел этими про- программами, а также примеры, на которых они дают сбой, мож- можно найти в [5]. В главе 11 мы будем изучать тесты, которые позволят нам с уверенностью определять простоту чисел. Но если быть до конца откровенным, они не такие простые и эф- эффективные, как тест Миллера. Упражнения 1. Какие из чисел: 645, 567 и 701 являются псевдопростыми по основанию 2? Какие из них псевдопросты по основанию 3? Какие просты? 2. Покажите, что если п — псевдопростое число одновре- одновременно по основаниям а и ab, то оно псевдопростое и по осно- основанию Ь. 3. Пусть п — натуральное число. Положим р\ = 6п + 1, Р2 = 12п + 1 и рз = 18п + 1. Покажите, что если р\, рг и
Упражнения 189 Рз — простые числа, то произведение piptpz является числом Кармаикла. Покажите также, что эти условия выполнены для п = 1, 6 и 35. Какие числа Кармаикла получаются при таких значениях п? 4. Разложите число 29 341 на множители и покажите, что оно — число Кармаикла. 5. Пусть р\ < Р2 — нечетные простые числа. Положим п = piP2 и допустим, что как pi — 1, такир2"~1 делит п —1. По- Покажите, что в этом случае п — 1 = pi — 1 (mod p2 — l). Восполь- Воспользуйтесь этим фактом для получения противоречия. Сделайте отсюда вывод, что числа Кармаикла должны иметь более двух простых сомножителей. 6. Какие из чисел: 645, 2047 и 2309 строго псевдопростые по основанию 2? Какие из них строго псевдопростые по осно- основанию 3? Какие простые? 7. Покажите, что если нечетное натуральное число п стро- строго псевдопростое по основанию Ь, то оно и псевдопростое по этому основанию. 8. Напишите программу, находящую все псевдопростые числа по основаниям 2 и 3, не превосходящие 106. Напомним, что п — псевдопростое по основаниям 2 и 3, если оно нечетное, составное и удовлетворяет соотношениям: 2"-1 = 1 (mod п) и З" = 1 (mod n). Поэтому программа будет проверять только нечетные состав- составные числа. Один из способов нахождения таких чисел состо- состоит в применении решета Эратосфена к нечетным целым, не превышающим 106. Только отбрасывать нужно простые числа, оставляя составные. Сколько из найденных Вами псевдопро- псевдопростых чисел являются числами Кармаикла?
190 Псевдопростые числа 9. Напишите программу, которая находила бы все числа Кармаикла, являющиеся произведением d простых множите- множителей, каждый из которых не превосходит 103. Основная пробле- проблема при этом (даже для относительно небольших значений d) заключается в том, что числа Кармаикла будут довольно боль- большими. Поэтому для простого делителя р числа п, проверяя де- делимость п—1 нар—1, необходимо использовать сравнения. Бо- Более того, если программа сгенерировала число п = рхрг •••?<*, то вычет п по модулю рг — 1 вычисляется как произведение вы- вычетов множителей п и редукцией этого произведения по моду- модулю pi — 1. Поскольку все простые делители числа п меньше, чем 103, такой подход позволяет производить операции над числа- числами, не прибегая к специальному программному обеспечению. Примените написанную программу для вычисления всех чи- чисел Кармаикла с d сомножителями, не превосходящими 103, для 3 ^ d ^ 8. Для этого не нужно перемножать найденные множители. Достаточно выписать их набор для каждого чи- числа, найденного программой. 10. Напишите программу для определения наименьшего псевдопростого числа по данному основанию. Ее исходными данными будет целое число b ^ 2. В программе следует при- применять тест Миллера (по основанию Ь) ко всем составным не- нечетным числам до тех пор, пока Вы не получите сообщения о неопределенном ответе. Это будет наименьшее строго псев- псевдопростое число по основанию Ь. Разумеется, область поиска будет ограничена наибольшим целым числом if, поддержива- поддерживаемым языком программирования, который Вы выбрали. Ваша программа должна выдавать два возможных результата: наи- наименьшее строго псевдопростое число по основанию Ь или со- сообщение: «строго псевдопростых чисел по основанию Ь, мень- меньших К, не существует». Чтобы найти все нечетные составные числа, меньшие К, можете использовать решето Эратосфена. Примените программу для вычисления наименьшего псевдо- псевдопростого числа по основаниям 2, 3, 5 и 7.
Упражнения 191 11. Напишите программу для определения псевдопростых чисел по основанию 2, равных квадрату простого числа р, при условии, чтор < г = 5-Ю4. Программа будет использовать ре- решето Эратосфена для поиска всех простых р ^ г, а затем под- подставлять каждое простое число в сравнение 2Р = 2 (mod p2). Существует только два примера квадратично псевдопростых по основанию 2, удовлетворяющих наложенным ограничениям.
Глава 8. Системы сравнений В этой главе мы изучаем метод решения систем линейных сравнений, называемый китайским алгоритмом остатков. В последнем параграфе мы увидим, как этот алгоритм приме- применяется для передачи ключа к шифру нескольким людям. § 8.1. Линейные уравнения Начнем со случая одного линейного уравнения: ах = b (mod n), A.1) в котором п — натуральное число. В § 5.7 мы видели, что это уравнение легко решается, если НОД(а, п) = 1. По теореме обратимости, взаимная простота чисел а и п влечет обрати- обратимость а в Ъп. Пусть а — соответствующий обратный элемент. Умножая на него сравнение A.1), мы получаем: а(ах) = ab (mod n). Так как аа = 1 (mod n), отсюда следует сравнение х = ab (mod n),
§ 8.1. Линейные уравнения 193 что дает решение уравнения. В частности, если п — простое ии^О (modn), уравнение A.1) всегда имеет решение. Предположим теперь, что а не обратим в Zn. Напомним, что это равносильно условию НОД(а, п) ф 1. Наличие решения у A.1) означает, что найдутся элементы х, у 6 Z, для которых ах — пу = Ь, A.2) а это возможно только если НОД(а, п) делит Ь. Итак, если уравнение A.1) имеет решение, то b делится на НОД(а, п). Ра- Разумеется, в случае обратимости класса а в Zn, необходимое условие выполнено, поскольку тогда НОД(а,п) = 1. Проверим, что обратное тоже верно. Пусть d = НОД(а, п) делит Ь. Тогда а = da', Ь = db' и п = dn' для некоторых нату- натуральных а', Ь' и п'. Сокращение равенства A.2) на d дает: а'х — п'у = b', что равносильно сравнению а'х = b' (mod n'). Отметим, что сравнение берется по модулю п' — делителю исходного моду- модуля п. Более того, НОД(а',п') = 1, так что новое сравнение должно иметь решение. Итак, мы доказали, что если НОД(а, п) делит Ь, то множество решений уравнения A.1) непусто. Суммируя вышесказанное, заключаем: уравнение A.1) име- имеет решение тогда и только тогда, когда НОД(о, п) делит Ь (см. упражнение 7 главы 2). Кроме того, приведенный метод ре- решения линейных сравнений легко применим, поскольку исполь- использует только расширенный алгоритм Эвклида. Однако, когда решения будут получены, у нас могут возникнуть несколько поводов для удивления. Решим сравнение 6а; = 4 (mod 8). Поскольку НОДF,8) = = 2 ф 1, то 6 не имеет обратного в Ъ%. Если данное сравнение имеет решение, то найдутся такие целые х и у, для которых 6а; — 8у = 4. Разделим это равенство на 2: Ъх — Ау = 2, что равносильно сравнению За; = 2 (mod 4). Но 3 сам себе обра- тен в Z4. Умножая последнее сравнение на 3, мы приходим к
194 Системы сравнений решению: х = 2 (mod 4). A.3) Это не совсем то, что нужно. Действительно, мы начинали со сравнения по модулю 8, и решение тоже хотели бы найти по модулю 8, а не по модулю 4, как в A.3). Беда легко поправи- поправима. Как следует из A.3), решение х сравнения 6х = 4 (mod 8) записывается в виде х = 2 + 4/г для некоторого к € 7L. Ес- Если к четно, то х = 2 (mod 8) — одно из решений. С другой стороны, если к нечетно, то к = 1т + 1 и х = 6 + 8т. Так что х = 6 (mod 8) — другое решение. Более того, посколь- поскольку к может быть либо четным, либо нечетным, существуют только эти возможности. Следовательно, уравнение 6 • х = 4 имеет ровно два разных решения в Ze, а именно 2 и 6. Это пример линейного сравнения с двумя решениями. Как мы ви- видели в § 6.4, такое произошло потому, что модуль сравнения был составным. § 8.2. Астрономический пример В этом параграфе мы описываем один из методов решения систем линейных сравнений. Это очень древний алгоритм. Он применялся еще в античности для решения проблем астроно- астрономии. Мы начнем с задачи, сформулированной на современном языке, которая могла бы рассматриваться древними астроно- астрономами. Три спутника пересекут меридиан города Лидса се- сегодня ночью: первый — в 1 ночи, второй — в 4 утра, а третий — в 8 утра. У каждого спутника свой период обращения. Первому на полный оборот вокруг Земли требуется 13 часов, второму — 15, а третьему — 19 часов. Сколько часов пройдет (от полуночи) до того момента, когда спутники одно- одновременно пересекут меридиан Лидса?
§ 8.2. Астрономический пример 195 Посмотрим, как эта задача переводится на язык сравнений. Пусть х — количество часов, которые пройдут с 12 часов но- ночи до момента одновременного прохождения спутниками над меридианом Лидса. Первый спутник пересекает этот мериди- меридиан каждые 13 часов, начиная с часу ночи. Это можно записать как х = 1 + 13* для некоторого целого t. Другими словами, х = 1 (mod 13). Соответствующие уравнения для остальных спутников имеют вид: х = 4 (mod 15) и х = 8 (mod 19). Таким образом, три спутника одновременно пересекут ме- меридиан Лидса через х часов, если х удовлетворяет эти трем уравнениям. Следовательно, для ответа на поставленный во- вопрос достаточно решить систему сравнений: х = 1 (mod 13), х = 4 (mod 15), B.1) х = 8 (mod 19). Заметим, что мы не можем складывать или вычитать уравне- уравнения системы, поскольку модули сравнений в них разные. Бу- Будем решать эту задачу, переходя от сравнений к уравнениям в целых числах. Так, сравнение х = 1 (mod 13) соответству- соответствует диофантову уравнению: х = 1 + 13*. Заменяя х во втором сравнении системы на 1 + 13*, получаем: 1 + 13* = 4 (mod 15), т.е. 13* = 3 (mod 15). Но 13 обратимо по модулю 15, обратный к нему элемент — это 7. Умножая последнее сравнение на 7 и переходя в нем к вычетам по модулю 15, имеем: * = 6 (mod 15). Значит, * может быть записан в виде: * = 6+15« для какого-то целого и. Следовательно, х = 1 + 13* = 1 + 13F + 15«) = 79 + 195и.
196 Системы сравнений Заметим, что все числа вида 79 + 195« являются целыми ре- решениями первых двух сравнений системы B.1). Наконец, под- подставим в третье сравнение вместо х выражение 79 + 195«: 79 + 195« = 8 (mod 19), так что 5« = 5 (mod 19). Ввиду обратимости остатка 5 по модулю 19, на него можно сократить и увидеть, что и = 1 (mod 19). Переписывая это сравнение как диофантово уравнение, мы получим и = 1 + 19и для некоторого целого v. Итак, х = 79 + 195« = 79 + 195A + 19v) = 274 + 3705v. Какой отсюда можно сделать вывод относительно спутни- спутников? Напомним, что х — количество часов, которые пройдут от полуночи до момента одновременного прохождения спут- спутников над меридианом Лидса. Поэтому нам нужно было най- найти наименьшее натуральное значение переменной х, удовле- удовлетворяющее системе B.1). Мы это сделали. Поскольку решение системы: х = 274 + 3705г>, то ответ: 274. Итак, спутники одно- одновременно пройдут над меридианом Лидса через 274 часа по- после 0 часов сегодняшней ночи, что соответствует 11 дням и 10 часам. Но общее решение системы дает больше информации. Прибавляя к 274 любое кратное 3705, мы получаем другое ре- решение системы. Иначе говоря, спутники одновременно пересе- пересекают означенный меридиан каждые 3705 часов после первого такого момента, что соответствует 154 дням и 9 часам. В следующем параграфе мы проведем детальный анализ примененного метода решения системы линейных сравнений. Заметим, что мы решали эту систему трех сравнений, рассма- рассматривая по два сравнения за раз. Действительно, сначала мы получили решение первых двух сравнений: х = 79 + 195«, что равносильно х = 79 (mod 195). Для поиска решений третье- третьего сравнения мы решаем другую систему двух уравнений, а именно Г х = 79 (mod 195), \ х = 8 (mod 19).
§ 8.3. Китайский алгоритм остатков 197 В общей ситуации нам предстоит решать несколько систем двух сравнений. Поэтому в следующем параграфе мы детально проанализируем алгоритм решения систем только двух срав- сравнений. § 8.3. Китайский алгоритм остатков: взаимно простые модули .Китайский алгоритм остатков так назван потому, что впервые был найден в «Учебнике математики мастера Сана», написанном между 287 и 473 годами нашей эры. В своей кни- книге мастер Сан решал численные примеры, а потом выводил из них общие правила решения аналогичных задач. Более общий анализ той же проблемы с несколькими примерами можно най- найти в книге, написанной Цзинь Цзю-шао (Qin Jiushaq) в 1247 году. Аналогичные задачи рассматривались многими другими математиками, включая индийца Бхаскару (Bhaskara, VI век нашей эры) и Никомаха из Герасы. Историческую справку о теореме см. в [27]. Китайский алгоритм остатков — это простое обобщение метода, использованного при решении системы из §8.2. По- Подробному изучению алгоритма и посвящен настоящий пара- параграф. Рассмотрим систему х = a (mod т), ,, ., х = Ь (mod n). Как и в § 8.2, из первого сравнения следует, что х = а + ту, где у — целое число. Подставляя вместо х во втором сравнении а + ту, мы получаем: а + ту = b (mod n). Другими словами, ту = {Ь - a) (mod п). C.2) Но благодаря §8.1 мы знаем, что это сравнение имеет реше- решение тогда и только тогда, когда наибольший общий делитель
198 Системы сравнений тип делит b — а. Для уверенности в том, что это условие вы- выполнено, достаточно предположить, что НОД(п, т) = 1. Пред- Предположение равносильно тому, что m имеет обратный элемент в Zn; скажем, а. Теперь сравнение C.2) легко решается. Умножая обе его части на а, получаем: у = а(Ь — a) (mod п). Следовательно, у = а(Ь — а) + nz, где z — целое. Так как х = а + ту, то х = а + та(Ь — а) + mnz. Но Шп = 1 в Ъп. Значит, найдется такое целое /3, при котором 1 — am = 0п. Итак, х = a(l — ma) + mab + mnz = afin + mab + mnz. Преимущество такой записи решения в том, что а и 0 легко вычисляются. Действительно, 1 = am + /Зп, так что а и /3 находятся расширенным алгоритмом Эвклида, примененным к m и п. В итоге, если НОД(т, п) = 1, то при любом целом к число afin + bam + ктп является решением системы C.1). А сколько решений имеет такая система сравнений? Бес- Бесконечно много, если- мы имеем в виду целочисленные реше- решения. Ведь при каждом конкретном выборе z мы получаем но- новое решение, согласно формуле, выписанной выше. Рассмо- Рассмотрим этот момент более подробно. Предположим, что целые а; и у удовлетворяют системе C.1). Тогда х = a (mod m) и у = a (mod m). Разность этих сравнений приводит к соотно- соотношению: х — у = 0 (mod m), т.е. х — у делится на т. Проделывая то же самое со вторым сравнением, получаем, что х—у делится на п. А ввиду взаимной простоты тип и леммы из § 3.4, это доказывает делимость х — у на тп. Значит, если х и у — це- целые решения системы C.1), то х — у (mod тп). Поэтому, хотя система и имеет бесконечно много решений, все они сравнимы друг с другом по модулю тп. Другими словами, система име- имеет только одно решение в Zmn. Но нельзя забывать, что все
§ 8.3. Китайский алгоритм остатков 199 наши выводы справедливы только благодаря предположению: НОД(т,п) = 1. Сведем все полученные факты в следующую теорему. Китайская теорема об остатках. Пусть тип — вза- взаимно простые натуральные числа. Система х = a (mod m), х = b (mod n) имеет одно и только одно решение в Zmn. Хороший способ разобраться, действительно ли Вы поняли эту теорему, — рассмотреть ее геометрическую интерпрета- интерпретацию. Предположим, что у Вас есть таблица с тп клетками. Столбцы таблицы пронумерованы элементами Zm, а строки — элементами Zn. В клетку таблицы, стоящую на пересечении столбца, соответствующего a G Zm, и строки, соответствую- соответствующей b G Zn, поместим целое число х, удовлетворяющее следу- следующим условиям: • 0 ^ х ^ тп — 1, • х = a (mod m), • х = b (mod n). Скажем, что соответствующая клетка таблицы имеет коорди- координаты (а, Ь). Поскольку 0 ^ х ^ тп — 1, мы можем считать число х представителем класса сопряженности по модулю тп, т.е. реально х представляет некоторый класс х G Zmn. Что говорит об этой таблице китайская теорема об остат- остатках? Предположим, что НОД(т,п) = 1. Из теоремы следует, что каждая клетка таблицы соответствует в точности одному целому, заключенному между 0 и тп — 1, т.е. одному классу из Ътп. Таким образом, в разных клетках стоят разные чи- числа и наоборот. Еще раз напомним, что модули у нас взаимно
200 Системы сравнений просты. Приведем таблицу для т = 4 и п = 5. 0 I 2 ICO 4" 0 0 16 12 8 4" 1 5 T 17 13 9 2 Ш 6 2 18 14 3 15 TT 7 col 19 Заметим, что таблица соответствует прямому произведе- произведению Z4 х Z5. С первого взгляда может показаться, что для заполнения таблицы необходимо решить 20 систем линейных сравнений. Но китайская теорема об остатках подсказывает заполнять таблицу «в обратном порядке». Для целого числа х между 0 и тп — 1 найдем место в таблице, вычисляя его выче- вычеты по модулю тип. Например, в нашем случае вычет 14 по модулю 4 равен 2, а по модулю 5 — 4. Поэтому ему соответ- соответствует клетка с координатами B,4). Но это не последнее слово в науке; можно сделать еще про- проще. Реально, существует возможность заполнить всю таблицу целиком, не производя вычислений для отдельных чисел! Что- Чтобы понять как, вспомним, что у нас есть геометрическая ин- интерпретация множества Z4: четыре точки, расположенные на равных расстояниях друг от друга вдоль окружности, каждая из которых представляет один класс в Z4- Похожая картинка есть и для Z5. В действительности нашу таблицу можно интерпретиро- интерпретировать как плоскую карту, или план, представляющий некую расположенную в пространстве двумерную поверхность. Что- Чтобы найти эту поверхность, мы поступаем следующим обра- образом. Поскольку классы Z4 (горизонтальные координаты) мож- можно считать расположенными вдоль окружности, мы склеим правую сторону таблицы с левой. Получится цилиндр. Но клас- классы Z5 (вертикальные координаты) также удобно представлять
§ 8.3. Китайский алгоритм остатков 201 точками на окружности. Поэтому верх таблицы нужно скле- склеить с низом. В результате получится поверхность, которая называется тором, напоминающая по форме бублик или ба- баранку. Вернемся к задаче о заполнении таблицы. Поскольку числа 0, 1, 2 и 3 меньше и четырех, и пяти, они совпадают со свои- своими вычетами по обоим этим модулям. Поэтому нам не нужно делать каких-либо вычислений для определения их координат, и мы сразу можем поместить их в таблицу: 0 т 2 3 4 0 0 1 Т 2 3 3" Заметим, что расставляя по очереди эти классы по клет- клеткам таблицы, мы, начав с левого верхнего угла таблицы, пе- переходили каждый раз на одну клетку вправо и одну вниз. А проставив четыре первых класса, уперлись в правую границу таблицы. Бели бы в таблице был еще один столбец, то, при- придерживаясь сформулированного правила, мы поместили бы в нем 4, но на одну строчку ниже 3, т.е. в последней строке. Од- Однако у нас нет этого липшего столбца, не так ли? На помощь приходит геометрическая интерпретация таблицы. Склеив ее вертикальные границы, мы видим, что первый левый столбец таблицы можно считать идущим сразу за ее последним пра- правым столбцом. В терминах несклееннои таблицы это означает, что мы должны «перепрыгнуть» с последнего столбца на пер- первый, одновременно спустившись на одну строчку вниз. Следо- Следовательно, 4 нужно поставить на пересечение первого столбца
202 Системы сравнений и последней строки таблицы: 0 т 2 3 4 0 0 1 Т 2 2 3 Кажется, у нас появилась новая проблема: мы дошли до нижней границы и опять не можем двигаться дальше. Но в силу геометрической картинки, нижняя и верхняя границы та- таблицы склеены, и мы можем перейти к первой строке таблицы. Только теперь нужно сместиться на один столбец вправо отно- относительно предыдущего положения. Сделав это в нашем случае, мы получим: 0 т 2 3 4 0 0 4 1 5 Т 2 2 3 |ео Мы можем повторять этот процесс, пока не заполним все клет- клетки таблицы. § 8.4. Китайский алгоритм остатков: общий случаи Мы в деталях проанализировали решение системы линей- линейных сравнений для взаимно простых модулей потому, что имен- именно этот случай встретится нам в следующих главах. Однако
§ 8.4. Китайский алгоритм остатков: общий случай 203 китайский алгоритм остатков можно так же использовать и при решении систем, у которых модули не взаимно простые. Но в этом случае при решении линейных сравнений требует- требуется предельная внимательность, возрастающая с каждым ша- шагом алгоритма. Достаточно продемонстрировать один при- пример. Рассмотрим систему х = 3 (mod 12), х = 19 (mod 8). Из первого сравнения мы получаем: х = 3 + 12у для неко- некоторого целого у. Подставляя найденное выражение для х во второе сравнение системы, имеем: 12у = 16 (mod 8). Так как НОДA2,8) = 4 делит 16, последнее сравнение должно иметь решение. Действительно, его целочисленный эквивалент имеет вид: 12у — Sz = 16. Разделим это равенство на 4: Зу — 2z = 4, т.е. Зу = 4 (mod 2). Но 3 = 1 (mod 2), а 4 = 0 (mod 2), так что у = 0 (mod 2). Следовательно, у = 2к для некоторого целого к. Наконец, подставляя 2к вместо у в равенство х = 3 4- 12у, на- находим х = 3 4- 24к. Итак, данная система имеет единственное решение по модулю 24. Однако 8 • 12 = 96. Так какое же отно- отношение число 24 имеет к модулям 8 и 12? Ответ на этот вопрос найдете в упражнении 5. Для любой пары не взаимно простых модулей всегда мож- можно написать систему сравнений, не имеющую ни одного реше- решения. С точки зрения геометрической интерпретации § 8.3, это означает, что если модули обладают общим нетривиальным делителем, то в соответствующей таблице всегда останутся незаполненные клетки. Еще раз повторим, нет никакой необходимости делать ка- какие-либо вычисления для заполнения таблицы. Просто мы дол- должны проставлять числа 0,1,..., начиная с левой верхней клет- клетки, сдвигаясь каждый раз на один столбец вправо и одну стро- строку вниз, не забывая «перепрыгивать» справа налево и снизу вверх при приближении к соответствующей границе таблицы.
204 Системы сравнений Заполняя таким образом таблицу для не взаимно простых мо- модулей, мы вернемся в клетку с координатами @,0), не перебрав всех тп — 1 чисел. Это объясняет, почему некоторые клетки таблицы останутся пустыми. Для т = 4 и п = 6 таблица вы- выглядит следующим образом: 0 т 2 3 4 5 0 0 loo 4 1 Т 9 5 2 6 2 ш 3 7 leo 11 § 8.5. Снова степени Для систем сравнений, число уравнений в которых больше двух, есть свой вариант китайской теоремы об остатках. Мы ее сформулируем без доказательства, поскольку это просто еще одно приложение китайского алгоритма остатков. Сна- Сначала определение: натуральные числа nit...,nje называются попарно взаимно простыми, если НОД(п$,п^) = 1 для лю- любой пары i Ф j. Например, три числа П1,П2,пз — попарно взаимно простые, если НОД(п1,П2) = 1, НОД(п1,пз) = 1, НОД(п2,п3) = 1. Китайская теорема об остатках. Пусть п\,...,Пк — попарно взаимно простые натуральные числа. Тогда всякая система х = а\ (mod щ), х = а,2 (mod пг), х = ак (mod п&) имеет одно и только одно решение в ЪП1...Пк.
§ 8.5. Снова степени 205 Применив эту версию теоремы, мы можем упростить вы- вычисление вычетов степеней по модулю п, если известно его разложение на простые множители. Мы будем также предпо- предполагать, что каждый простой множитель входит в это разложе- разложение с кратностью 1, потому что именно в этом случае метод наиболее эффективен. Допустим, что разложение имеет вид: n = Pi•■•?&, где 0 < pi < • • • < рк — простые числа. Для целых а и т мы сна- сначала находим вычет ат по каждому модулю р{. Бели простые множители не слишком велики, то вычисления будут очень бы- быстрыми даже для больших шив, поскольку нам помогает это делать теорема Ферма. Предположим, что мы уже сделали эти вычисления, причем ат = ri (mod pi) ат = t<i (mod рг) и и и Os Os OS S r2 *rk <P1, <pjfc. am = rk (mod рк) Поэтому для определения вычета ат по модулю п нам нужно только решить систему сравнений: х = г\ (mod pi), х = Г2 (mod рг), Заметим, что модули системы — различные простые чи- числа, поэтому они попарно взаимно просты. Значит, по китай- китайской теореме об остатках, система всегда имеет решение, ска- скажем, г, 0 < г < п — 1. Более того, любые два таких решения сравнимы по модулю р\ • ■ • рк = п. Так как ат — тоже решение системы, имеем ат = г (mod п). Следовательно, г — вычет ат по модулю п. Приведем пример. Допустим, нам нужно найти вычет чи- числа 26754 по модулю 1155. Раскладывая 1155 на множители,
206 Системы сравнений найдем: 1155 = 3 • 5 • 7 ■ 11. Применив теорему Ферма к каждо- каждому из этих простых чисел, получим: 26754 = 1 (mod3), 26754=4 (mod 5), 26754 = 2 (mod 7), 26754 = 5 (mod И). Таким образом, нам осталось решить систему: х = 1 (mod 3), х = 4 (mod 5), х = 2 (mod 7), х = 5 (mod 11) с помощью китайского алгоритма остатков. По первому срав- сравнению системы х = 1 + Зу, поэтому второе сравнение дает: 1 + Зу = 4 (mod 5), т.е. у = 1 (mod 5), потому что тройка обратима по модулю 5 и на нее можно сократить обе части сравнения. Итак, х = 4 + 15г. Подста- Подставляя вместо х его выражение через z в третье сравнение и решая его, получаем: х = 79 + 105t. Наконец, решая четвертое сравнение относительно i, мы имеем t = 6 (mod 11). Значит х = 709 + 1155w и 709 — искомый вычет числа 26754 по моду- модулю 1155. § 8.6. Посвящение в тайну Бенджамен Франклин (Franklin) однажды сказал: «Трое мо- могут хранить тайну, если двое из них мертвы.» В этом парагра- параграфе мы изучаем безопасную систему допуска живых к секрет- секретным сведениям, основанную на китайской теореме об остат- остатках. Представьте себе следующую ситуацию. Подвал банка
§ 8.6. Посвящение в тайну 207 должен открываться каждый день. В банке служат пять стар- старших кассиров, имеющих доступ к подвалу. По причинам бе- безопасности руководство банка предпочитает систему, требу- требующую присутствия хотя бы двух из этой пятерки для возмож- возможности открыть подвал. Проблема в том, чтобы подвал могли открыть любые два старших кассира. Рассмотрим эту проблему в более общем виде. Для того, чтобы открыть подвал банка, необходимо знать код, кото- который можно считать натуральным числом s. Мы хотим рас- распределить этот код между п старшими кассирами так, чтобы каждый из них знал что-то об s. Назовем такую частичную информацию фрагментом кода. Более того, открыть подвал должно быть невозможно, если в банке присутствуют менее к старших кассиров, где к ^ 2 — натуральнее число, меньшее п. Мы добьемся этого условия, распределив информацию о коде таким образом, что • число s легко определяется, если известно к или более фрагментов; • число s трудно определимо, если известно менее к фраг- фрагментов. Фрагменты кода, сообщаемые каждому из старших касси- кассиров, — это, в действительности, элементы множества §, со- состоящего из п упорядоченных пар натуральных чисел. Чтобы построить §, выберем сначала множество £, из п попарно вза- взаимно простых чисел. Пусть N — произведение наименьших к из них, а М — произведение к — 1 наибольших. Будем гово- говорить, что к является порогом для £, если М < N. Из этого условия следует, что произведение любых к (или более) эле- элементов из £ всегда больше, чем N, а произведение к — 1 (или менее) его элементов — всегда меньше М. Предположим, код s выбран так, что М < s < N, а множе- множество § состоит из пар (m, sm), где meC,asm — вычет числа s по модулю т. Эти пары и являются теми фрагментами кода,
208 Системы сравнений которые сообщаются старшим кассирам. Тот факт, что мно- множество £ имеет порог к > 2, обеспечивает неравенство s > т для каждого т Ed. В частности, sm < s для любого т 6 £. Что произойдет, если к или более старших кассиров нахо- находятся в банке? В этом случае известны t (^ к) пар из множе- множества §. Обозначив эти пары через (mi, si),..., (m<, S{), рассмо- рассмотрим систему сравнений: х = si (mod mi), x = s2 (mod m2), ,g ^ ж = S{ (mod Элементы множества £ попарно взаимно просты. Значит, по китайской теореме об остатках, эта система имеет решение 0 ^ xq < mi • • • тр Но совпадает ли xq с s? Это как раз та причина, по которой мы накладывали требование: & имеет порог к. Поскольку t ^ к, то наше требование влечет: mi • • • mt ^ N > s. Но s тоже удовлетворяет системе F.1), и по китайской теореме об остатках xq = s (mod mi • • • mj). А так как s и xq — натуральные числа, меньшие mi • ■ ■ mj, то s = Xq. Предположим теперь, что в банке находится менее к стар- старших кассиров. Несмотря на то, что t теперь меньше fc, мы все равно сможем решить систему F.1). Пусть хо — наименьшее неотрицательное решение, тогда 0 < Жо < mi ■ ■ • mt. Но про- произведение меньшего, чем к количества элементов из Л всегда меньше М; так что xq < М < s. Следовательно, решения си- системы не достаточно для восстановления кода s. Однако как xq, так и s — решения системы F.1), поэтому
§ 8.6. Посвящение в тайну 209 где у — некоторое натуральное число. Неравенство N > s > М > х0 влечет М — xq s — xq N — xq — — ^ У ^ ^ • ГП1 • • • т% ТП\ • • • 77l{ TTll ' ' ' "ty Приходим к выводу: если t < к, то для восстановления кода s нам предстоит отыскивать недостающий множитель у среди более чем , \N-M] d=rw целых чисел. Выбрав модули так, чтобы d оказалось очень большим, мы сделаем задачу поиска у практически нерешаемой. Для завершения разбора задачи осталось осветить один во- вопрос: можно ли найти множество £, удовлетворяющее всем необходимым требованиям? Ответ на него положителен, но нуждается в результатах о распределении простых чисел, ко- которые выходят за рамки данной книги. Этот вопрос детально обсуждается в [32]. Сделаем обзор рассмотренной конструкции. Для нее требу- требуются начальные данные: число п старших кассиров, имеющих доступ в подвал банка, и наименьшее число к из них, при- присутствие которых в банке достаточно для открытия подвала. Первое число определяет размер множества £, а второе — его порог к. Далее нам нужно подобрать множество £ из п элемен- элементов с порогом к (эту часть конструкции мы подробно не обсу- обсуждали), и вычислить М и N, определенные выше. Напомним, что С нужно выбирать с таким расчетом, чтобы число d, о котором мы говорили, было как можно больше; в противном случае код может быть разгадан простым перебором. Код s — натуральное число, которое выбирается лежащим между М и N. Теперь можно вычислить элементы множества § и со- сообщить их сотрудникам. Конечно, безопасность этой схемы зависит от того, насколько велико к, уменьшающее вероят- вероятность, что одновременно к кассиров из одного банка окажутся
210 Системы сравнений нечестными. Если это все-таки произойдет, то нам придется утешать себя мыслью, что не существует систем безопасности 100-процентной надежности. Рассмотрим пример. Допустим, что в банке работают 5 старших кассиров и из соображений безопасности по крайней ме- мере двое из них должны присутствовать при открытии подвала. Значит, £ должно состоять из пяти элементов, а его порог ра- равен 2. Выбрав элементы £ среди малых простых чисел, получим: £ = {И, 13, 17, 19, 23}. Произведение двух наименьших чисел этого множества равно N = 11 • 13 = 143. С другой стороны, поскольку к = 2, произ- произведение к — 1 наибольших простых из £ в действительности равно его максимальному элементу. Таким образом, М = 23 и £ имеет порог 2. Код s может быть любым целым числом, лежащим между 23 и 143. Пусть s = 30. Тогда § = {(И, 19), A3,17), A7,13), A9,11), B3,7)}. Наконец, что будет, если в банке присутствуют старшие кас- кассиры с фрагментами A7,13) и B3,7)? Код из их фрагментов получается как наименьшее число, удовлетворяющее системе: х = 13 (mod 17), х = 7 (mod 23). Легко увидеть, что таким числом будет 30. Этот код коррек- корректен, он позволяет открыть подвал. Упражнения 1. Решите систему сравнений, упоминавшуюся еще в ки- китайской книге 717 года н.э.: х = 1 (mod 2), х = 2 (mod 5), х = 5 (mod 12).
Упражнения 211 2. Задача из «Учебника математики мастера Сана»: «Есть несколько предметов. Если их число разделить на 3, то в остат- остатке получится 2; при делении числа предметов на 5, в остатке остается 3, а на 7 — 2. Каково число предметов?» 3. Задача из «Ариабхатиамы», индийского трактата по ариф- арифметике VI века: «Найдите наименьшее натуральное число, да- дающее остаток 5 при делении на 8; остаток 4 при делении на 9, а при делении на 7 — остаток 1.» 4. В древней индийской астрономии использовался период Кальпа длительностью в 4320 миллионов лет; предполагалось, что в его начале и конце все фундаментальные астрономиче- астрономические константы планет были нулевыми. Допустим, что в не- некоторый момент времени Г от начала Кальпы солнце, луна и т.д. пропутешествовали следующие количества дней после завершения их полных оборотов: Солнце Луна Марс Меркурий Юпитер Сатурн 1000 41 315 1000 1000 1000 Зная, что солнце совершает три оборота за 1096 дней, луна — один оборот за 185 дней, Меркурий — тринадцать оборотов за 1096 дней, Юпитер — три оборота за 10 960 дней и Сатурн — один оборот за 10960, найдите число дней от начала Кальпы до момента Г. 5. Покажите, что система х = а (modm), х = Ь (mod n) не может иметь более одного решения по модулю наименьшего общего кратного тип. Заметим, что мы не предполагаем взаимной простоты чисел тип. 6. Используя китайскую теорему об остатках, вычислите остатки от деления 245632 и З54632 на 12155.
212 Системы сравнений 7. Решите сравнение: х2 + 42х + 21 = 0 (mod 105). Указание: Разложите 105 на простые множители и решите сравнение по модулю каждого простого делителя числа 105. Затем примените китайский алгоритм остатков. 8. Найдите последовательность наибольшей длины, состо- состоящую из подряд идущих простых чисел, начиная с 11, с поро- порогом 3. Сделайте то же самое для порога 4. 9. Пусть р и q — различные простые числа и n = pq. Пред- Предположим, что мы знаем решения уравнений: х2 = a (mod p) и x2 = a (mod q). Покажите, как китайский алгоритм остатков можно использовать для решения уравнения х2 = a (mod n). Сравните Ваше решение с методом из § 8.5 и упражнением 7. 10. Пустьр и q — различные простые числаип = pq. Пред- Предположим, что оба простых числа имеют остаток 3 при делении на 4. Напишите программу, которая по данным р, q и о нахо- находит решения уравнения х2 = a (mod n). Наше предположение о простоте чисел облегчает решение уравнений х2 = о (mod p) и х2 = о (mod q) (см. главу 6, упражнение 17). Это третья задача из серии, приведенной в конце упражнения 8 главы 12.
Глава 9. Группы В этой главе мы вводим понятия «группа» и «подгруппа» и доказываем теорему Лагранжа. Группы — это один из «таксо- «таксономических классов», которые используются при классифика- классификации математических структур с общими характеризующими свойствами. Как при знакомстве с любым новым классом объ- объектов, мы сможем понять, что из себя представляет группа, только познакомившись с большим количеством частных слу- случаев. Примеры, обсуждаемые в данной главе, включают в себя группы симметрии многоугольников и группы обратимых це- целых чисел по модулю п. Последний из них является ключевым для приложения групп к теории чисел в главах 10 и 11. §9.1. Определения и примеры Группа обладает двумя основными составляющими: мно- множеством и операцией, определенной на этом множестве. Обо- Обозначим множество буквой G, а операцию — символом *. Под операцией мы понимаем правило, согласно которому любым двум элементам о и Ь множества G ставится в соответствие третий элемент из G, обозначаемый о*Ь.
214 Группы В математике довольно часто изучаются множества, снаб- снабженные операцией. Вам знакомы примеры: натуральные чи- числа с операцией сложения, целые числа с операцией сложения, рациональные числа с операцией умножения, векторы в трех- трехмерном пространстве с операцией векторного умножения. Однако не любое множество с операцией является группой. Множество G с операцией * называется группой только в том случае, если операция удовлетворяет следующим условиям: • Ассоциативность: для любых элементов о, Ь, с 6 G а*(Ь*с) = (а*Ь)*с. • Единичный элемент: существует такой элемент е Е G, что при любом а € G а*е = е*а = а. • Обратный элемент: для каждого а Е G найдется эле- элемент а' Е G, называемый обратным к о, удовлетворяю- удовлетворяющий соотношению а * а' = о' * а = е. Причина, по которой группа так определяется, состоит в том, что множества с операцией, удовлетворяющей этим усло- условиям, часто встречаются и обладают некоторыми очень при- приятными и полезными свойствами. То есть группы определя- определяются именно так не по Божественному промыслу, а по вполне прагматическим соображениям1. 1 Вопрос о том, чем занимается математик — придумывает искус- искусственные конструкции, или открывает реально существующие объекты и закономерности — философский и вызывает много споров. Большая часть математиков считает, что они все же изучают реальный мир. По- Поэтому любое определение, в том числе и определение групп, отражает характеризующие свойства объекта, который существует не только в во- воображении ученых, а именно по Божественному промыслу. — Прим. пе- рев.
§ 9.1. Определения и примеры 215 Заметим, что мы не требуем коммутативности операции, т.е. равенства о * Ь = Ь * а для любой пары о, Ь б G. Еще раз отметим, что такое требование продиктовано соображения- соображениями удобства: существует много интересных групп, операция в которых не коммутативна. Те группы, у которых операция все же коммутативна, называются абелевыми. Нередко множества, снабженные операцией, не являются группами. Например, сложение натуральных чисел N ассоци- ассоциативно и имеет 0 в качестве единичного элемента. Однако, единственное обратимое натуральное число (т.е. число, имею- имеющее обратный элемент по сложению) — это 0, поскольку от- отрицательные числа не принадлежат множеству N; значит на- натуральные числа не образуют группу. Множество векторов трехмерного пространства с вектор- векторным произведением — более показательный пример. Оно не является группой потому, что векторное произведение не ас- ассоциативно. Кстати, скалярное произведение векторов вооб- вообще не является операцией: результатом скалярного умножения двух векторов является число, а не вектор. С другой стороны, группы в изобилии встречаются сре- среди знакомых множеств с операциями. Например, Z, Q, R и С — группы относительно операции сложения. Ввиду того, что только два целых числа (±1) обратимы относительно ум- умножения, множество Z не является группой по умножению, так же, как и Q, КиС из-за невозможности деления на 0. Однако, если выбросить 0 из этих множеств, то они станут группами. Таким образом, Q \ {0}, R \ {0} и С \ {0} — группы относи- относительно умножения. Для любого положительного числа п множество Ъп образу- образует группу по сложению. Множество квадратных пхп матриц с вещественными коэффициентами и операцией сложения ма- матриц — тоже группа, в то время как обратимые матрицы (т.е. матрицы с ненулевым определителем) образуют группу отно- относительно умножения матриц. Заметим, что последний пример
216 Группы определяет не абелеву группу, ибо произведение матриц не- некоммутативно. Число элементов в группе называется ее порядком. Все группы в приведенных примерах бесконечны, за исключением Zn, чей порядок равен п. Другая хорошо известная конечная группа — это множество {—1,1} с операцией умножения це- целых чисел; ее порядок равен 2. Обратите внимание, что говоря о «группе», мы в действительности называем подлежащее мно- множество. Это общепринятый подход, и мы будем в дальнейшем его придерживаться по мере возможности. Более интересные примеры конечных групп мы изучим в следующих двух пара- параграфах. Последний комментарий к терминологии. Многие резуль- результаты этой главы будут относиться к «общим» группам. По- Поэтому, во избежание недоразумений, удобно использовать ней- нейтральный символ * для обозначения операции в общей группе. Однако при этом мы будем употреблять термины «умножить» и «умножение», даже если * обозначает совсем другую опера- операцию. Причина в том, что такие неологизмы, как «звездануть» и «звездение» режут слух и отвлекают внимание читателя от существа дела. §9.2. Симметрии Одно из наиболее важных приложений групп — изучение симметрии1. Можно было бы даже сказать, что группы — это перевод понятия «симметрии» на язык математики. Поэтому 1К сожалению, в русском «математическом» языке термин «симметрия» закреплен за двумя разными понятиями. С первым из них Вы сталкива- сталкивались еще в школе. Это «осевая симметрия» и «центральная симметрия». Второе понятие обсуждается как раз в этом месте книги. Во избежание недоразумений отметим, что если автор употребляет слово «симметрия» в его первом значении, ему всегда будет предшествовать прилагательное «осевая» или «центральная». — Прим. перев.
§ 9.2. Симметрии 217 нет ничего удивительного в том, что группы играют ключе- ключевую роль во многих дисциплинах, для которых симметрии но- носят основополагающий характер: в геометрии, кристаллогра- кристаллографии и физике. Сказав это, мы должны признать, что наше представление о симметрии довольно туманно. В геометрии под симметрией понимают такое преобразование, которое, будучи применено к точкам фигуры, не меняет ее внешнего вида. Лучший спо- способ осознать это может быть следующим. Представьте, что вы видите геометрическую фигуру, скажем, многоугольник. Теперь закройте глаза на то время, пока кто-то применяет к ней преобразование. Если, открыв глаза, вы не сможете с уверенностью определить, подверглась ли фигура преобразо- преобразованию, или нет, то это преобразование — симметрия. Такое пояснение может показаться все еще довольно смутным, но его вполне достаточно, чтобы «потрогать руками» простые примеры этой главы. Основательное обсуждение симметрии в науке и искусстве смотри в [50] ([Д.8]). Попытаемся найти все симметрии равностороннего тре- треугольника. Прежде всего, у нас есть три поворота вокруг центра треугольника против часовой стрелки: на 120°, 240° и 360°. Последний из них совпадает с поворотом на 0°. Кро- Кроме того, есть еще три осевых симметрии относительно бис- биссектрис треугольника. Ясно, что перечисленные шесть пре- преобразований удовлетворяют критерию, сформулированному в предыдущем абзаце, и, как следствие, относятся к симметри- ям правильного треугольника. Более того, можно показать, что других Симметрии у треугольника нет. Мы еще немного поговорим об этом в конце параграфа. Мы описали множество, но у нас пока нет операции. Если же представлять симметрию как преобразование совокупно- совокупности точек, образующих треугольник, то естественный канди- кандидат на операцию — композиция преобразований, т.е. симме- симметрии. Поскольку композиция отображений ассоциативна, пер-
218 Группы вое условие, накладываемое на операцию в группе, очевидно, выполнено. Роль единичного элемента играет поворот на 0°, который на самом деле вообще ничего не делает с треуголь- треугольником. А как насчет обратного? Обратным к повороту на 120° бу- будет поворот на 240°, и наоборот, поскольку 120 + 240 = 360, а поворот на 360°, по существу, то же самое, что поворот на 0°. Каждая из осевых симметрии очевидным образом обратна са- сама себе. Итак, все симметрии треугольника, описанные выше, имеют обратные элементы. Поэтому множество всех симме- симметрии равностороннего треугольника с операцией композиции является группой порядка 6, которую обычно обозначают сим- символом £>з. Пронумеруем вершины равностороннего треугольника, как показано на рисунке: 1 и 2 — вершины при основании, а 3 — вершина, противоположная основанию. Равносторонний треугольник Нумерация вершин дает возможность описать симметрии треугольника как перестановки вершин. Например, при пово- повороте на 120° каждая вершина переходит в соседнюю по напра- направлению против часовой стрелки. Существует очень практич- практичное обозначение для такой перестановки: 1 2 3\ 3 I)' Это такое преобразование треугольника, при котором верши- вершина 1 переходит на место, занимавшееся ранее вершиной 2, вер-
§ 9.2. Симметрии 219 шина 2 переходит на место третьей, а вершина 3 становит- становится на место первой. В верхней строчке нашего обозначения преобразований треугольника всегда будут стоять 1, 2 и 3 в стандартном порядке; а в нижней строчке мы будем записы- записывать места, на которых окажутся соответствующие вершины после применения преобразования к треугольнику. Заметим, что места носят номера вершин, которые занимали их до пре- преобразования. Рассмотрим другой пример. Осевую симметрию относительно биссектрисы утла при вершине 3 можно запи- записать в виде: 12 3 Если через р обозначить поворот на 120°, то поворот на 240° можно записать как Р2 = РР, а р3 = е — единичный элемент группы — поворот на 360°. Пусть а обозначает любую из осевых симметрии. Тогда а2 = е. Мы хотели бы сопоставить «произведению» ар соответствую- соответствующее ему преобразование треугольника. Заметим, что ар не мо- может равняться р2. Действительно, «умножая» с правой стороны предположительное равенство ар = р2 на р2 и учитывая соот- соотношение р3 = е, мы получаем: а = р, т.е. противоречие. Ана- Аналогично можно показать, что арфгт&арфр. Значит, ар не поворот, а какая-то из осевых симметрии. Однако ар ф а, по- поскольку предположение ар = а влечет ложное равенство р = е. Итак, ар — осевая симметрия, отличная от а. Пусть осевая симметрия а, которую мы только что рассма- рассматривали, оставляет неподвижной вершину 3. Чтобы подчерк- подчеркнуть этот факт, обозначим ее через о$. Вернемся к нашему вопросу. Поворот р переводит вершину 1 на место вершины 2, в то время как стз перемещает вершину 2 на место 1. Таким образом, композиция этих преобразований оставляет верши- вершину 1 на месте, т.е. стзрA) = 1. Обозначив символом а\ осевую
220 Группы симметрию, оставляющую неподвижной вершину 1, получим соотношение: а%р = о\. Мы могли бы вычислить о"зР другим способом, используя обозначения перестановок вершив, введенные выше. Так 1 2 3 \ / 1 2 3 ] и р^\ч з i Прежде чем выполнять вычисления, заметим: запись <тзрA) означает, что р применяется к 1 раньше а, т.е. Следовательно, 2 3\ / 1 2 3 3 lJ = U 3 2 Используя только основные свойства групп, мы можем, опи- опираясь на доказанное равенство стзр = <*ъ вычислить несколь- несколько соотношений между элементами £>з, забыв об их истин- истинной природе. Например, пусть G — группа с операцией *. Если х, у € G, то обратным к «произведению» х * у будет у' * х'. Для проверки этого утверждения достаточно перем- перемножить элементы: (х * у) * (у' * х') = х -к (у * у') * х' = х * е * х' = х * х' = е. Учитывая доказанный простой факт из теории групп и сохра- сохраняя штрих для обозначения обратных элементов, имеем: (стзр)' = р'оз = Р2<тз- Но мы уже установили тождество: о"зр = о\. А так как а\ = е, заключаем, что р2^ = а\. Поэтому, ст3р = <7i = р2ст3 Ф В частности, D$ не абелева группа.
§ 9.2. Симметрии 221 Равенство о$р — а\ влечет много других соотношений. Умножая его слева на ог и учитывая тождество а\ = е, получа- получаем: р = ozo\\ в то время, как умножение его справа на р2 дает: ^3 = °\Р2- Заметим, что поскольку операция в Г>з не комму- коммутативна, мы должны оговаривать, с какой стороны умножаем равенство на элемент. Продолжая эти вычисления достаточно долго, мы можем заполнить таблицу умножения для D%. В общей ситуации та- таблица умножения конечной группы представляет собой табли- таблицу, строки и столбцы которой «пронумерованы» элементами группы, и, если операция в группе обозначена *, то в клетке таблицы, находящейся на пересечении строки х и столбца у, стоит произведение х-ку. Таблица умножения группы £>з имеет вид: е Р Р2 о\ ог о% е е Р Р2 о\ ог ог Р Р Р2 е ог ог о\ Р2 Р2 е Р о\ <?г о\ о\ оъ от. е Р2 Р ог ог о\ ог Р е Р2 <тз ог о\ Р2 Р е Заметим, что ни в строках, ни в столбцах выписанной та- таблицы нет повторяющихся элементов. Это общий факт, имею- имеющий место для любой группы. Действительно, предположим, что у нас есть группа G с операцией *. Значения клеток строки таблицы умножения, отвечающей элементу о G G, имеют вид: о* а; для некоторых х EG. Допустим теперь, что существуют такие х, у € G, для которых о * х = а * у. Тогда х = о' * (о * х) = о' * (о * у) = у, где а' — обратный к о элемент группы. Итак, значения клеток о* а; и а * у совпадают тогда и только тогда, когда они лежат
222 Группы в одном столбце. В частности, все элементы одной строки та- таблицы умножения группы G должны быть различны. Анало- Аналогичные рассуждения доказывают соответствующий результат для столбцов. Группа симметрии правильного n-угольника, обозначаемая Dn, имеет порядок 2п и порождается поворотом р на 360/п градусов и одной из его осевых симметрии. Бели через а обо- обозначить осевую симметрию, то ар = рп~га. Такая группа называется группой диэдра порядка 2п. Для про- проверки того факта, что группа диэдра действительно описыва- описывает симметрии правильного многоугольника, необходимо при- привлекать линейную алгебру. Подробности можно найти в кни- ге [6] ([Д.5]). §9.3. Интерлюдия Теория групп — относительно новая область математики, обязанная своим рождением теории полиномиальных уравне- уравнений. Квадратные уравнения решались еще вавилонянами более чем за тысячу лет до Рождества Христова. Греки, более инте- интересовавшиеся геометрией, не внесли большого вклада в этот предмет. Интерес к уравнениям вновь возник у арабов, кото- которые искали пути решения полиномиальных уравнений третей степени, т.е. кубических уравнений. Однако реальный прорыв в этом направлении произошел только в эпоху Возрождения в Италии. История открытия формулы корней полиномиальных урав- уравнений степени 3 и 4 изобилует интригами и предательством. Все началось со Сципиона дель Ферро (Scipione del Ferro), профессора Болонского Университета, одного из старейших университетов средневековья. Неизвестно, когда дель Ферро
§9.3. Интерлюдия 223 нашел метод решения кубических уравнении, но перед своей смертью (около 1526 года) он передал секрет формулы своему ученику, Антонио Мария Фиоре (Antonio Maria Fior). Это было время, когда состязания в мастерстве между уче- учеными были обычным делом, и Фиоре послал вызов Никколо Тарталья (Niccolo Tartaglia) («заике»), профессору математи- математики в Венеции. Суть предложенного Фиоре «мат-боя» заключа- заключалась в том, что оба участника к определенному дню долж- должны были ответить на 30 вопросов, поставленных соперником, а проигравшему предстояло оплатить 30 банкетов. Незадолго до окончания срока на Тарталья снизошло вдохновение: он от- открыл свой собственный способ вычисления корней кубическо- кубического уравнения и в течение нескольких часов сделал все предло- предложенные задачи. Фиоре был не в столь хорошей форме и ока- оказался неспособным решить большинство проблем, сформули- сформулированных его противником. Таким образом, Тарталья провоз- провозгласили победителем, но он по-джентльменски отказался от заслуженного выигрыша — чести победителя ему было доста- достаточно. Триумф Тарталья привел к его встрече с Джироламо Кар- дано (Gerolamo Cardano), известным врачом, математиком и астрологом. Тарталья рассказал Кардано подробности своего решения кубических уравнений, но взял с того клятву, сохра- сохранить в тайне полученные сведения. Кардано развил метод Тар- Тарталья и в конце концов опубликовал его в своем труде «Вели- «Великое искусство» в 1545 году1. Кроме решения кубических урав- уравнений, книга содержала метод сведения уравнения четвертой степени к кубическому. Последний результат был получен Лу- Луиджи Феррари (Lodovico Ferrari), другом и секретарем Кар- Кардано. Само собой разумеется, этот поступок сильно разгневал Тарталья. Он обвинял Кардано в плагиате, и даже опублико- 1 Полное название книги: «Великое искусство или о правилах алге- алгебры». — Прим. перев.
224 Группы вал историю, включавшую полный текст клятвы. Почему же Кардано нарушил обещание? Причина проста: ему стало из- известно, что дель Ферро открыл ту же самую формулу раньше Тартальи. И этот факт, по представлению Кардано, освободил его от клятвы, позволив опубликовать результаты. В книге он ясно заявляет, что метод решения кубических уравнений был впервые найден дель Ферро, и позже переоткрыт Тарталья. Следующие 300 лет математики напрасно искали аналогич- аналогичные методы решения уравнений степени выше четвертой. Они хотели найти формулу, которая выражала бы зависимость кор- корней полиномиального уравнения от его коэффициентов. Од- Однако в записи формулы допускались только такие операции, как сложение, вычитание, умножение, деление, и извлечение корней. Соответствующая формула традиционно называется «решением уравнений в радикалах». Беда в том, что наложенные ограничения делают задачу неразрешимой. Первое полное доказательство неразрешимо- неразрешимости дал норвежский математик Н. Г. Абель (Abel, N. Н.) в 1824 году. Абель внес большой вклад в многие области ма- математики, особенно в анализ и алгебраическую геометрию. Теперь мы говорим об абелевых группах, абелевых функциях и теореме Абеля о сходимости ряда. Его достижения тем бо- более удивительны, что умер он от чахотки не дожив до своего двадцать седьмого дня рождения. Известность Абеля столь ве- велика, что в его честь была установлена статуя в Королевском Парке в центре Осло. Точку в проблеме решения уравнения в радикалах поставил современник Абеля, Э. Галуа (Galois, E.). Он показал, что ка- каждому полиномиальному уравнению соответствует конечная группа, которая полностью определяет, решается ли уравне- уравнение в радикалах. Так как группа конечна, то, по крайней мере в принципе, можно написать алгоритм решения этого вопроса для каждого конкретного уравнения.
§ 9.3. Интерлюдия 225 Жизнь Галуа даже более трагична, чем судьба Абеля. Его отец покончил с собой по политическим мотивам; его рабо- работа была непонята членами Парижской Академии Наук и он умудрился провалиться на вступительном экзамене в Поли- Политехническую школу: Галуа был настолько разъярен глупостью экзаменаторов, что запустил тряпкой для стирания с доски в одного из них! Поскольку он нуждался в деньгах, ему при- пришлось поступить на работу в Нормальную школу. В то время Франция была монархическим государством, а Галуа — пыл- пылким республиканцем. Его политическая деятельность привела к увольнению из школы. Во время эпидемии холеры 1832 года он находился в тюрь- тюрьме из-за своих политических убеждений, и был переведен в госпиталь. Там он влюбился в девушку, но о той истории мало известно. Факт в том, что вскоре после этого он был вызван на поединок. Причины дуэли неясны. Недавние исследования позволяют предположить, что угнетенный положением дел и недостаточным признанием своих работ, он, возможно, пред- предпочел умереть за идеи республиканцев. Предполагалось пред- представить его смерть как акт злодеяния приверженцев монар- монархии и использовать как повод для начала восстания в процес- процессе его похорон. Трагедия не оставила Галуа даже здесь . Во время похорон лидеры движения прослышали о смерти генера- генерала Ламарка. На погребении известного генерала должна была собраться большая толпа, и было решено, что целесообразнее задержать восстание до этого момента. Поэтому похороны Га- Галуа прошли тихо и спокойно. В ночь перед дуэлью, предчувствуя приближающуюся кон- кончину, Галуа пишет предсмертное письмо своему другу, Огю- сту Шевалле (Chevalier). После обзора своих открытий, закан- заканчивая письмо, он пишет: «Попросите Гаусса или Якоби (Jacobi) публично вы- выразить свое мнение. Не о верности, а о важности этих теорем. Позже, я надеюсь, найдутся люди, ко-
226 Группы торые смогут извлечь пользу при разборе всей этой путаницы.» Смертельно раненый Галуа был оставлен на поле чести. Толь- Только спустя несколько часов проходящий мимо крестьянин за- заметил его и перенес в больницу. Единственным членом семьи, которого уведомили о надвигающейся смерти Галуа, был его младший брат. На пороге смерти Галуа нашел силы, чтобы сказать ему: «Не плачь, мне нужна вся моя храбрость, чтобы умереть в двадцать лет.» Жозеф Лиувилль (Liouville, J.) был тем человеком, кто на- наконец «разобрался в путанице» и представил миру замечатель- замечательные результаты, которые лежали без движения среди прочих бумаг Галуа. В 1846 году Лиувилль опубликовал все матема- математические статьи, оставленные Галуа, включая предсмертное письмо — не более 64 напечатанных страничек. Герман Вейль (Weyl, H.), один из самых великих математиков двадцатого столетия, оценивает письмо к Шевалле следующими словами: «Это письмо, учитывая новизну и глубину идей, ко- которые оно содержит, является, возможно, наиболее существенной частью всего написанного человече- человечеством.» Нет ничего удивительного в том, что Галуа в наши дни счи- считается одним из основателей современной алгебры. Ведь это именно он разработал концепцию групп (и дал им название), имеющую огромную важность в современной науке. О работах Галуа можно узнать в книге [16], которая близко придержива- придерживается подхода Галуа к теории уравнений. Современный способ изложения того же материала предложен в [6]. Для истори- исторического освещения теории полиномиальных уравнений можно обратиться к [48] ([Д-9]). Поздняя биография Галуа, содержа- содержащая детальный отчет о поединке, приведена в [44] ([Д.5]).
§9.4. Арифметические группы 111 § 9.4. Арифметические группы Не стоит упускать из виду тот факт, что мы в конечном счете интересуемся простыми числами и разложением целых в произведение простых сомножителей. Эти арифметические свойства связаны с мультипликативной структурой множе- множества Z. В данном параграфе мы вводим группы, призванные помочь в изучении этих свойств. Пусть п — натуральное число. Напомним (§5.7), что сим- символом U(n) мы обозначаем множество обратимых элементов в Zn; т.е. U(n) = {а е%п\ЕОД(а,п) = 1}. Покажем, что это множество образует группу относительно операции умножения классов в Zn. Мы знаем, что произведение двух элементов из Zn тоже принадлежит Zn. Так ли это для элементов U{nI Точнее гово- говоря, верно ли, что произведение любых двух элементов из U(n) остается в множестве U{nI Бели нет, то умножение классов не является операцией на множестве U{n) в смысле определе- определения из §9.1. Другими словами, нам нужно проверить, что произведение двух обратимых классов из Zn тоже обратимо. Мы уже сде- сделали это в §5.7, но рассуждение настолько просто, а резуль- результат так важен, что мы повторим его здесь. Обозначим, как обычно, обратные элементы к a,b e U(n) через а' и V соответ- соответственно. Тогда аЪ обратим, причем обратный к нему элемент равен a'V. Для проверки достаточно вычислить произведение: ^ • Ш = ^ • W = Т. Теперь мы уверены,что умножение чисел по модулю п за- задает операцию на множестве U(n), и нам остается показать, что она удовлетворяет условиям из определения группы. Ассо- Ассоциативность очевидным образом выполнена, поскольку умно-
228 Группы жение элементов Z« ассоциативно. Единичным элементом слу- служит 1: это обратимый элемент в Zn, и поэтому принадлежит он U(n). Тот факт, что любой элемент U(n) имеет обратный, непосредственно следует из определения U(ri). Итак, множе- множество U(n) с операцией умножения — на самом деле группа. Очевидно, что группа* U(ri) имеет конечный порядок: она является подмножеством в множестве Zn, состоящем из п клас- классов. Однако в следующих главах нам потребуется точная ин- информация о порядке U(n). На самом деле, порядок группы U(n) настолько часто используется в приложениях, что полу- получил специальное обозначение: <р(п). Таким образом, мы име- имеем функцию, сопоставляющую каждому натуральному числу п количество элементов множества U(n). Она называется функ- функцией Эйлера или тотиентом. Хотелось бы сразу найти общую формулу для <р(п), но на- начнем мы с некоторых частных случаев. Предположим, что р — простое. Тогда каждое натуральное число, меньшее р, взаимно просто с ним. Значит, состоит из р — 1 элемента, т.е. (р(р) = р — 1. Также легко вычисляется <р(рк) с простым р. Все что мы должны для этого сделать — подсчитать количество натураль- натуральных чисел, меньших рк, чей наибольший общий делитель с р равен 1. Но ввиду простоты числа р, равенство НОД(а,рк) = 1 равносильно тому, что р не делит а. Следовательно, достаточ- достаточно подсчитать количество натуральных чисел, меньших рк, не делящихся на р. Однако проще найти числа, делящиеся на р. Действительно, если 0 < а < рк делится на р, то a = pb, где 0<Ь<рк~г. Таким образом, среди рк - 1 натуральных чисел, меньших рк, имеется ровно рк~1 — 1, делящихся на р. Значит, рк — рк~х —
§ 9.4. Арифметические группы 229 количество натуральных чисел из того же интервала, не деля- делящихся на р. Итак, фк)=рк-рк-1=рк-1(р-1). Для общей формулы нам потребуется следующий результат. Теорема. Если тип — взаимно простые натуральные числа, то <р(тп) = tp(m)(p(n). Прежде чем приступить к доказательству, следует отме- отметить, что предположение теоремы о взаимной простоте тип необходимо. Без него теорема просто не верна. Бели, напри- например, m = п = р, то (р{тп) = (р(р2) =р(р- 1), но (р(т)(р{п) = tp(pJ = (р - IJ. Доказательство теоремы использует геометрическую ин- интерпретацию китайской теоремы об остатках, т.е. таблицу из §8.3 (стр. 200). Напомним, как она строится. Мы начи- начинаем с двух натуральных чисел, удовлетворяющих условию НОД(т, п) = 1. Далее чертим таблицу с т столбцами и п стро- строками. Каждый столбец помечаем неотрицательным целым чи- числом (слева направо, в порядке возрастания чисел) и интер- интерпретируем эти числа как классы из Zm. Аналогично «нумеру- «нумеруем» строки таблицы элементами Zn. Итак, получилась табли- таблица с тп клетками. В каждую из них, стоящую на пересечении столбца а и строки Ь, мы ставим натуральное число х, удовле- удовлетворяющее системе сравнений: х = a (mod m), х = b (mod n) и неравенству: 0 < x ^ тп — 1. Целые числа а и Ъ мы называем координатами вычета х. Поскольку тип взаимно просты,
230 Группы китайская теорема об остатках гарантирует нам, что значе- значение каждой клетки таблицы однозначно определяется сформу- сформулированными условиями. Мы будем интерпретировать х как класс в Zmn. Доказательство теоремы. Предположим, что х Е Zmn под- подчиняется неравенству 0 < х ^ тп— 1 и а и & — его координаты в таблице, построенной выше. Начнем с доказательства следу- следующего вспомогательного утверждения. Утверждение. Класс х принадлежит группе U(mn) то- тогда и только тогда, когда a Е U(m) ubE U(n). Пусть сначала х Е U(mn). Тогда класс х имеет обратный х' Е U(mn), т.е. хх' = 1 (mod тп). Но это сравнение спра- справедливо в том и только том случае, когда хх' — 1 делится на тп. В частности, хх' — 1 должно делиться на т, и поэто- поэтому хх' = 1 (mod m). Ввиду выбора х, справедливо сравнение х = a (mod т). Значит, ах' = 1 (mod m) via обратим в Zm. Аналогичные рассуждения показывают, что Ъ обратим в Zn. Для доказательства обратного утверждения предположим, что х — элемент из Zron, чьи координаты удовлетворяют усло- условиям: а Е U(m), Ъ Е U(n). Нам предстоит показать, что х — обратимый элемент Zmn. По предположению а имеет обрат- обратный элемент а' в Zm и Ъ имеет обратный V в Zn. Если х Е Zmn обратим, то где-то в таблице должен находиться обратный к нему. Чему равны его координаты? Естественно ожидать, что ими будут классы a' vib1. Итак, пусть 0 < у < тп — 1 — такое целое число, что у = a' (mod m), у = Ь' (mod n). Докажем, что у Е Ътп — обратный класс для х. Поскольку х = a (mod т) и у = a' (mod m), имеем: ху = аа' = \ (mod m).
§ 9.4. Арифметические группы 231 Значит, ху — 1 делится на т. Дословно те же рассуждения показывают, что ху — 1 делится на п. Но НОД(т,п) = 1, что в силу леммы из § 3.6 обеспечивает нам делимость ху — 1 на произведение тп. Другими словами, х • у = I в Zmn, что завершает доказательство утверждения. Опираясь на это утверждение, легко доказать теорему о функции Эйлера. Нам нужно вычислить ip(mri). По опреде- определению это значение равно числу элементов в U{mn). Следо- Следовательно, ввиду утверждения, мы должны подсчитать число клеток таблицы, координаты которых лежат, соответственно, в U(m) и U{n). Но число элементов U(m) равно (р(т), a U(n) имеет tp(n) элементов. Значит, искомое число клеток равно ip(m)(p(n). Итак, (р(тп) = (р(т)(р(п) и теорема доказана. Теперь мы готовы найти tp(n) для любого натурального п. Прежде всего разложим п в произведение простых множите- множителей: где 0 < pi < ■ • • < pk- По теореме Учитывая формулу для <р в случае степени простого числа, выведенную выше, мы получаем V(n) = Р*Г1 • ■ -Рекк~1(Р1 - 1) ■ • ■ (Pfc " 1). Например, для п = 120 = 23 ■ 3 • 5 </>A20) = 22B - 1)C - 1)E - 1) = 32. Заметим, что для применения формулы нам необходимо знать разложение числа п на простые множители. Это, конеч- конечно, нас не радует, если нам действительно необходимо вычи- вычислить <р(п) для большого целого п. Однако, мы увидим в гла- главе 12, что как раз эта трудность обеспечивает безопасность системы шифрования RSA.
232 Группы § 9.5. Подгруппы Если подмножество Я группы G является группой относи- относительно операции в G, то его называют подгруппой группы G. Ввиду важности понятия подгруппы для дальнейшего выпи- выпишем его более формальное определение. Пусть G — группа с операцией *. Непустое подмножество Я С G называется подгруппой группы G, если A) а*Ь Е Н для любой пары a,b G Я; B) единичный элемент группы G содержится в Я; C) если a G Я, то обратный к нему элемент а' также входит в Я. По терминологии, введенной в § 9.1, условие A) означает, что * (операция на группе G) является также операцией на множе- множестве Я. Знакомство с примерами начнем с подгрупп группы Z по сложению. Для натурального п обозначим через nL множе- множество всех чисел, кратных п, как положительных, так и от- отрицательных. Является ли nL подгруппой в Z? Для начала отметим, что сумма чисел, кратных п, тоже кратна п, так что условие A) выполнено. Единичным элементом группы Z служит 0, кратный любому числу, поэтому 0 е nL. Наконец, —а-п= (—а) ■ п G пЪ. Поэтому обратный к каждому элементу из пЪ тоже принадлежит пЪ. Таким образом, пЪ действитель- действительно подгруппа в Z. Этот пример вновь появится в § 9.8. Отметим, что любая группа имеет по крайней мере две подгруппы. Одна из них совпадает со всей группой, а другая состоит только из единичного элемента. Среди примеров § 9.1 встречается несколько подгрупп. Так, относительно сложения, Z является подгруппой группы Q, которая, в свою очередь, подгруппа в R. Более того, множество вещественных чисел R с операцией сложения — подгруппа в группе комплексных
§ 9.5, Подгруппы 233 чисел С. Если же рассматривать умножение, то множество не- ненулевых рациональных чисел — подгруппа в R \ {0}, которая является подгруппой в С\ {0}. С другой стороны, Q \ {0} (группа по умножению) лежит внутри Q (группы по сложению). Несмотря на это, мы не мо- можем называть Q\ {0} подгруппой в Q, поскольку на них опре- определены разные операции. Большой интерес, особенно с точки зрения криптографии, представляют конечные группы. Тот факт, что данное конеч- конечное подмножество группы является подгруппой, влечет не- неожиданные ограничения на количество его элементов, т.е. его порядок, которые облегчают процесс поиска подгрупп в ко- конечной группе. Мы изучим простейшее из таких соотношений, которое называется теоремой Лагранжа. Между прочим, Ла- Лагранж умер год спустя после рождения Галуа, и его исследо- исследования в теории полиномиальных уравнений оказали большое влияние на работу Галуа над этим предметом. Кроме того, Лагранж внес свой вклад в развитие других областей матема- математики, таких как теория чисел и механика. Теорема Лагранжа. Порядок любой подгруппы конечной группы делит порядок всей группы. Проясним, о чем говорит теорема Лагранжа и, в особен- особенности, чего она не утверждает. Пусть Н — подмножество ко- конечной группы G. Тогда, очевидно, количество элементов в Н не больше, чем в G (равно, если Я = G). Теорема Лагранжа говорит, что если, к тому же, Н — подгруппа в G, то порядок Н обязан делить порядок G. Это несколько ограничивает круг подмножеств, которые могут являться подгруппами. Однако не верно, что для любого делителя к порядка конечной группы G найдется подгруппа в G из к элементов. Доказательство этой теоремы мы приведем в §9.8. Сна- Сначала нам нужно понять всю важность такого утверждения, а этого можно добиться только изучая разные приложения. Рассмотрим Z?3) группу симметрии правильного треугольни-
234 Группы ка, порядок которой равен 6. По теореме Лагранжа список порядков ее подгрупп ограничивается числами: 1, 2, 3 и 6. Лю- Любая подгруппа должна содержать единичный элемент е, но это не исключает возможности, что какая-то подгруппа состоит только из него. Таким образом, в D$ есть подгруппа {е} по- порядка 1. Далее, подгруппа может совпадать со всей группой G, при этом, естественно, ее порядок будет равен 6. Нам оста- осталось решить задачу о выделении подгрупп в D$ порядков 2 и 3. Это будет сделано после следующего параграфа, где мы исследуем систематический подход к поиску подгрупп. § 9.6. Циклические подгруппы Как обычно, обозначим символом * операцию на конечной группе G. Определим fc-ую степень элемента а этой группы стандартным образом: ак = а*а*---*а к раз и рассмотрим множество его степеней: Я = {е,а,а2,а3,...}. Очевидно, это конечное множество. Мы сказали «очевидно», потому что Н С G, a G — конечное множество, так что Н не может иметь бесконечного числа элементов. Но такое может быть только в том случае, если существуют равные степени а с разными показателями. Другими словами, найдутся такие натуральные п> т, что ат = ап. Пусть а' — обратный элемент к а. Умножая обе части ра- равенства ат = ап на (а')т, получим: ап~т = е — единичный элемент. Следовательно, для данного элемента а Е G найдется натуральное число к, для которого ак = е. Таким образом, а* о* =ак = е,
§ 9.6. Циклические подгруппы 235 т.е. обратный элемент к а совпадает с ак *, степенью само- самого а. В частности, обратный к о принадлежит множеству Н. Поскольку при умножении двух степеней элемента а снова по- получается его степень, то это последняя капля, позволяющая нам сделать вывод: Н — подгруппа G. Чему равен порядок группы HI Предположим, что к — наименьшее натуральное число, обладающее свойством ак = е. Если п > к, то мы можем разделить п на к с остатком: п = = kq + r, где 0 ^ г ^ к — 1. Значит, Но ак = е, так что ап = аГ. Иначе говоря, любая степень а, показатель которой больше к, равна степени с некоторым меньшим показателем. Следовательно, Более того, все эти элементы различны. Действительно, если г ^ s < к и ar = as, то as~T = e. С другой стороны, по предположению, г — s меньше к — наименьшего натурального числа, обладающего таким свойством. Значит, г — s = 0, т.е. г = s. Таким образом, порядок группы Н равен к. Итак, у нас появился простой метод построения подгрупп в данной группе G. Выберем произвольный элемент a G G, тогда • множество Н степеней а является подгруппой в G; • порядок группы Н равен наименьшему натуральному к, для которого ак = е. Сейчас удобный момент для введения следующей терминоло- терминологии. Подгруппа Н, состоящая из всех степеней одного элемен- элемента а, называется циклической подгруппой группы G, а элемент a — ее образующей. Наименьшее натуральное к, удовлетворя- удовлетворяющее соотношению ак = е, называется порядком элемента а.
236 Группы И как нетрудно убедиться, порядок циклической подгруппы совпадает с порядком ее образующей. В качестве простого приложения разработанного метода определим структуру группы G, порядок которой — простое число р. Примером такой группы служит Zp с операцией сло- сложения. Предположим, что Н — какая-то подгруппа в G. По теореме Лагранжа порядок Я должен делить порядок G, рав- равный р. Так как р простое, то порядком Н может быть только либо 1, либо р. В первом случае Я = {е}, а во втором Н = G. Таким образом, в группе G есть только две подгруппы. Теперь выберем произвольный элемент а^евби обозначим через Н циклическую подгруппу, им порожденную. Так как еф a G Н, то Н не может состоять только из единичного элемента и зна- значит, Я = G. В частности, G — циклическая группа, причем любой ее элемент, отличный от е, является образующей. Сум- Суммируем эти результаты в следующей теореме. Теорема о группах простого порядка. Если порядок группы G прост, то • G циклическая; • G имеет только две подгруппы: саму G и {е}; • любой элемент группы G, за исключением е, является образующей всей группы. Итак, любая группа простого порядка — циклическая. Об- Обратное же, вообще говоря, неверно. Например, порядок груп- группы СE) равен tpE) = 4, но она циклическая, и 2 — ее образу- образующая. Мы вернемся к этому примеру в главе 11, где докажем теорему о примитивных корнях. Хотя пока мы подробно обсудили лишь циклические под- подгруппы, это не означает, что других подгрупп не бывает. Мы убедимся в этом в следующем параграфе.
§ 9.7. В поисках подгрупп 237 § 9.7. В поисках подгрупп Применим результаты предыдущего параграфа к опреде- определению всех подгрупп группы Dz- Мы уже отмечали в § 9.5, что для этого достаточно найти в ней подгруппы порядков 2 и 3. Но 2 и 3 — простые числа, так что, согласно теореме из § 9.6, соответствующие подгруппы должны быть циклическими. Бо- Более того, они полностью определяются своими образующими. Поэтому нам достаточно понять, какие из элементов D$ име- имеют порядок 2, а какие — 3. Так как р2 ф е и р3 = е, то порядок р равен 3. Кроме того, Значит, р2 также имеет порядок 3. Поскольку каждая из осе- осевых симметрии сама себе обратна, ее порядок равен 2. Цикли- Циклическая подгруппа, порожденная р, имеет вид: Д = {е,р,р2}, откуда следует, что она совпадает с подгруппой, порожден- порожденной р2. Следовательно, R — единственная подгруппа в Dz, имеющая порядок 3. Каждая из осевых симметрии задает свою подгруппу в Dz порядка 2, а именно, {e,cri}, {е,а2}, {е,ст3}- Итак, мы доказали, что кроме {е} и Dz в группе Dz суще- существуют только циклические подгруппы. Следует ли отсюда, что Dz имеет только циклические подгруппы? На самом деле нет, поскольку Dz, будучи подгруппой в себе самой, не явля- является циклической. Действительно, если бы она была цикличе- циклической, то ее образующая имела бы порядок 6. Но, как мы виде- видели, любой из ее элементов имеет порядок 1, 2 или 3. Однако все собственные подгруппы в Dz — циклические. Подгруппа Н в G называется собственной, если она содержит хотя бы
238 Группы один элемент, отличный от единичного, и не совпадает при этом со всей группой G (Я Ф {е} иЯ Ф G). Далее мы хотим привести пример группы, которая не толь- только сама не является циклической, но и содержит собственную нециклическую подгруппу. Рассмотрим tf A6) = {I, 3, 5, 7, 9, IT, 13, 15} с операцией умножения по модулю 16. Эта группа имеет по- порядок (рA6) = 8. По теореме Лагранжа у нее могут быть под- подгруппы только порядков 1, 2, 4 или 8. Подгруппы порядков 1 и 8 определяются мгновенно, это {1} и С7Aб) соответственно. Для выделения остальных подгрупп мы должны вычислить порядки каждого элемента из £7A6). Это можно сделать до- довольно быстро: 7, 9 и 15 имеют порядок 2, а 3, 5, 11 и 13 — порядок 4. Значит в группе UA6) нет элемента порядка 8. В частности, она не является циклической. Можно ли утверждать, что любая собственная подгруппа в f/A6) циклическая? Напомним, что подгруппа простого по- порядка должна быть циклической. Поэтому порядок нецикли- нециклической подгруппы обязан быть составным числом, меньшим восьми, и одновременно делить 8. Значит, если такая подгруп- подгруппа существует, то ее порядок равен 4. Кроме того, порядок лю- любого ее элемента должен быть меньше 4, поскольку в против- противном случае она будет циклической. Ввиду теоремы Лагранжа отсюда вытекает, что все элементы искомой подгруппы, кор- корме 1 должны иметь порядок 2. Но £7A6) имеет в точности 3 таких элемента, которые вместе с единичным образуют мно- множество из четырех элементов, а именно, {Т, 7, 9,15}. Легко проверить, что оно является искомой подгруппой. Итак, U A6) имеет собственную нециклическую подгруппу поряд- порядка 4.
§ 9.8. Теорема Лагранжа 239 Мы воспользуемся результатами предыдущего параграфа для обобщения теоремы Ферма на случай составных модулей. Теорема Эйлера. Пусть а и п — натуральные числа. Если п > 0 и НОД(а,п) = 1, то а*п> = 1 (modn). Доказательство напрямую вытекает из теоремы Лагран- Лагранжа. Из взаимной простоты о и п следует, что о е U{n). По теореме Лагранжа порядок элемента а делит порядок группы U{n), который равен <р(п). Обозначив через к порядок эле- элемента а, получим: <р(п) = кг для некоторого натурального г. Значит, (о)<*п> = (а*)Г = I, что равносильно сравнению из теоремы Эйлера. § 9.8. Теорема Лагранжа Напомним формулировку теоремы. Теорема Лагранжа. Порядок любой подгруппы конечной группы делит порядок всей группы. Мы начнем с определения отношения эквивалентности, ис- используемого при доказательстве теоремы. Пусть G — группа с операцией * и Н — ее подгруппа. Говорят, что элементы х,у G G сравнимы по модулю Н, если х*у' ЕН, где у' — обратный к у элемент группы. В этом случае мы пишем х = у (mod H). Сравнение по модулю п, определенное в главе 5, являет- является частным случаем этого отношения. Действительно, пусть
240 Группы G — группа Z по сложению, иЯ — ее подмножество, состоя- состоящее из всех чисел (как положительных, так и отрицательных), кратных п. Поскольку операция на Z — сложение, обратным элементом к у будет у' = —у. Таким образом, согласно опреде- определению, х = у (mod Н) тогда и только тогда, когда х — у € Н, т.е. х — у кратно п. Следовательно, в этом примере сравнение по модулю Н эквивалентно сравнению по модулю п. Вернемся теперь к общему случаю сравнения по модулю Н в группе G. Следуя математическому педантизму, мы должны проверить что оно удовлетворяет трем определяющим свой- свойствам отношения эквивалентности. Пусть x,y,z E G. Рефлексивность. Нам нужно показать, что х = х (mod H). По определению сравнения это равносильно условию: х*х' G Н, которое, в свою очередь, следует из тех фактов, что х * х' = е та. Н — подгруппа. Симметричность. Сравнение х = у (mod H) означает, что х*у' £ Н. Но вместе с любым элементом подгруппы ей принад- принадлежит и обратный. Поэтому элемент у * х\ обратный к х * у', тоже содержится в if и, следовательно, у = х (mod H), что доказывает симметричность сравнения. Транзитивность. Допустим, х = у (mod H) viy = z (mod H). Эти сравнения переписываются в виде: х*у'ЕНъу*г'&Н соответственно. Так как Н — подгруппа, то x*z' = (x*y')*(y* z') £ Я. Отсюда х = z (mod H), и последнее свойство доказано. Итак, сравнение по модулю Н рефлексивно, симметрично и транзитивно, поэтому оно является отношением эквивалент- эквивалентности. Заметим, что существует точное соответствие между условием «Н — подгруппа в G» и свойствами, которые превра- превращают сравнение по модулю Н в отношение эквивалентности. Теорема Лагранжа зависит от тонкого баланса всех этих фак- фактов. Теперь, зная, что сравнение по модулю Н задает отноше- отношение эквивалентности, найдем класс эквивалентности элемента
§ 9.8. Теорема Лагранжа 241 х 6 G относительно этого отношения. По определению иско- искомый класс равен {yeG\y = x (mod Я)}. Но условие у = х (mod Н) — это то же самое, что у*х' S Н. Поэтому у = h-kx для некоторого элемента h 6 Н. Следова- Следовательно, класс эквивалентности элемента х может быть пере- переписан в виде: {h*x\heH}. Это подсказывает обозначение Н*х для такого класса1. За- Заметим, что класс эквивалентности единичного элемента е со- совпадает с самой подгруппой Н. Теперь мы готовы к доказа- доказательству теоремы Лагранжа. Доказательство теоремы Лагранжа. Пусть G — конечная группа с операцией *иЯ — ее подгруппа. Подсчитаем сначала количество элементов в классе эквивалентности по модулю Н. Если х 6 G, то его класс эквивалентности совпадает с H*x = {h*x\heH}. Покажем, что множества Н*х и Н имеют одинаковое количе- количество элементов. Так как элементы множества Н*х получаются умножением элементов Н на фиксированный элемент х S G, их не может быть больше, чем в Н. Предположим теперь, что hi *х = /i2 *х для каких-то двух hi, /12 6 Н. Тогда hi = (hi -к х) * х' = (/l2 * Х) -к х' = /l2, где х\ как всегда в этой книге, обозначает обратный элемент к х. Это означает, что различные элементы подгруппы Н при умножении их справа на х дают различные элементы в Н к х. Итак, мы доказали, что число элементов любого класса Н к х совпадает с порядком подгруппы Н\ *В теории групп это множество принято называть правым смежным классом группы G по подгруппе Н. — Прим. перев.
242 Группы Доказательство теперь получается комбинированием уже известных, но, на первый взгляд, никак не связанных друг с другом фактов. С одной стороны, поскольку сравнение по мо- модулю Н является отношением эквивалентности, оно разбивает всю группу G на различные непересекающиеся классы экви- эквивалентности. Таким образом, порядок группы G равен сумме количеств элементов в каждом из этих классов. С другой сто- стороны, как мы только что установили, все эти классы содержат одно и то же число элементов, равное порядку подгруппы Н. Значит порядок группы G равен порядку Н, умноженному на количество различных классов эквивалентности. В частности, порядок Н делит порядок G. Последний комментарий. Как мы отмечали в § 9.5, утвер- утверждение, обратное теореме Лагранжа, ложно. Точнее, если G — группа порядка п и к ■— один из делителей числа п, то груп- группа G вовсе не обязана иметь подгруппу порядка к. Например, порядок группы симметрии правильного тетраэдра равен 12, однако в ней нет подгруппы порядка 6. Для доказательства этого факта см. упражнения 20, 21 и 22. Тем не менее, если р — простой делитель порядка группы, то в G непременно найдется подгруппа порядка к. Это утверждение, называемое теоремой Коши (Cauchy), доказано, например, в [45] ([Д.5]). Упражнения 1. Группа £>4 симметрии квадрата имеет порядок 8. A) Запишите каждый элемент из ZXj как перестановку вершин квадрата. B) Найдите обратный к каждому элементу из £>4- C) Пусть р — поворот квадрата относительно его цен- центра против часовой стрелки на 90°, а а — одна из его осевых симметрии. Покажите, что ар = ръа. D) Заполните таблицу умножения для D$.
Упражнения 243 2. Пусть G — группа. Покажите, что если квадрат каждо- каждого элемента из G равен единичному элементу, то эта группа абелева. 3. Вычислите <?A25), (^A6200) и <^A0!). 4. Пусть п — натуральное число, ар — его простой дели- делитель. A) Покажите, что р — 1 всегда делит <р[п). B) Покажите, что р не обязано делить tp{n). C) Покажите, что п > <р(п). 5. Найдите значения п, для которых ip{n) = 18. Сделайте то же самое для <р(п) = 10 и <р(п) = 14. 6. Докажите, что если число tp(n) простое, то п = 3, 4 или 6. 7. Пусть к — натуральное число. Как можно было дога- догадаться, выполняя упражнения 5 и 6, решение уравнения <р(п) = к иногда отнимает много времени. Тем не менее, существует от- относительно простой алгоритм решения уравнения: п<р(п) = к, который мы сейчас опишем. Пусть к = ntp(n). Предположим, что р — наибольший простой делитель к. Покажите, что A) наибольший простой делитель числа п не превосхо- превосходит р; B) кратность р в разложении п<р{п) на множители дол- должна быть нечетной. Из утверждения B) следует, что в случае четной кратности р в разложении числа к уравнение к = nip(n) не имеет решений. Пусть р имеет нечетную кратность в разложении к на мно- множители. Предполагая, что решение уравнения существует, а л = рас при НОД(с,р) = 1, имеем к = п<р(п)=Р2а-1(р-1)с<р(с). Последнее уравнение может быть использовано для вычисле- вычисления а, поскольку мы знаем кратность р в разложении к. Найдя
244 Группы а, можно записать: pao-Wp_г) = с<р(с). Тот же метод можно использовать для определения наибольшего простого делите- делителя числа с, и так далее. Почему этот процесс когда-нибудь кончится? 8. Покажите, что равенство <р(п) = п — 1 выполнено только для простых п. 9. Представив п в виде п = 2*т, где г нечетно, покажи- покажите, что равенство (р(п) = п/2 справедливо только если п — степень двойки. 10. Покажите, что если т делит п, то ip{mri) = mip(n). 11. Найдите все подгруппы в группе D^ симметрии ква- квадрата. 12. Покажите, что UB) и 17D) — циклические группы, в отличие от U (8). 13. Пусть G — конечная циклическая группа порядка п. Покажите, что для любого числа т, делящего п, в группе G найдется элемент порядка т. Объясните, как в случае цикли- циклических групп отсюда следует теорема, обратная теореме Ла- гранжа. 14. Рассмотрите группу U B0). A) Вычислите ее порядок. B) Определите порядок каждого ее элемента. C) Покажите, что Z7B0) нециклическая группа. D) Найдите все подгруппы порядка 4 в группе U B0). E) Выделите нециклическую подгруппу в [/B0). 15. Пусть Si и 52 — две подгруппы конечной группы G. Покажите, что A) пересечение Si П 5"г — подгруппа в G; B) если порядки этих подгрупп взаимно просты, то Si П S2 = {e};
Упражнения 245 C) объединение подгрупп 5\ U S^ не обязательно будет подгруппой G. Указание: для доказательства B) вспомните, что пересече- пересечение ЙдПйг является подгруппой как в Si, так и в S2, после чего примените теорему Лагранжа, учитывая взаимную простоту порядков подгрупп. Чтобы доказать C), достаточно привести пример подгрупп, чье объединение не образует подгруппы; по- попытайтесь взять £>з в качестве G. 16. Пусть п — нечетное составное натуральное число. Рас- Рассмотрите подмножество Н(п) = {b S U(n)\ п — псевдопростое по основанию б}. Из приведенных ниже утверждений найдите верные. A) Множество Н(п) — подгруппа в U{n). B) Множество Н(п) не совпадает с U(n) ввиду разло- разложимости п. C) Поскольку число п составное, в группе U(n) нет эле- элемента порядка п — 1. 17. Найдите вычеты чисел: 73876 по модулю 60 и З67654 по модулю 125. 18. Пусть р — простое число, а г — натуральное. При- Применяя теорему Эйлера к степени рг, покажите, что это число является псевдопростым по основанию 6 тогда и только тогда, когда У = 1 (mod рг). 19. Используя предыдущее упражнение, покажите, что чи- число 10932 — псевдопростое по основанию 2. 20. Пусть Н — подгруппа конечной группы G. Предпо- Предположим, что отношение их порядков равно 2, и д — элемент группы G, не принадлежащий Н. A) Покажите, что д2 #Н*д.
246 Группы B) Объясните, почему G совпадает с объединением не- непересекающихся подмножеств Н и Н * д. C) Покажите, что д2 6 Н. 21. Обозначим через Т группу симметрии правильного те- тетраэдра. Она имеет порядок 12. A) Перечислите все элементы группы Т. B) Какие из них имеют порядок 3? Сколько их? 22. Цель упражнения — доказать, что в группе Т из преды- предыдущего упражнения нет подгрупп порядка 6. Чтобы сделать это, покажите, что если такая подгруппа Н существует, то она содержит все элементы порядка 3 группы Т, и приведите это к противоречию с упражнением 21. Указание: если порядок элемента a S Т равен 3, то степень (а2J = a3a = а принадлежит подгруппе Н в силу упражне- упражнения 20. 23. Опираясь на упражнение 18, напишите программу для вычисления псевдопростых чисел по основанию 2, представимых в виде р2, где р — простое число, меньшее 5 ■ 104 (см. упраж- упражнение 11 главы 7). 24. Напишите программу, вычисляющую <р(к) по данному натуральному к. Она, по существу, будет состоять из разложе- разложения к на простые сомножители. Используйте эту программу для определения всех натуральных к, не превосходящих 105, которые удовлетворяют уравнению ф(к) = tp(k + 1). Пока еще неизвестно, конечно ли число решений такого уравнения. 25. Положительное целое число к называется тотиентом, если уравнение ip(n) = к имеет решение. Напишите програм- программу, реализующую алгоритм упражнения 7. Какие тотиенты, меньшие 10s, нашла ваша программа?
Глава 10. Мерсенн и Ферма В первых двух параграфах этой главы мы изучаем клас- классические методы, применяемые для поиска делителей чисел Мерсенна и Ферма. Однако вместо того, чтобы следовать ори- оригинальному подходу Ферма и Эйлера, здесь используется язык теории групп и результаты, полученные в главе 9. Такой под- подход позволит нам разобраться с делителями упомянутых чисел пррстым и изящным способом. Теми же методами в § 10.4 до- доказывается очень эффективный тест на простоту для чисел Мерсенна. § 10.1. Числа Мерсенна Один из лучших способов генерирования очень больших простых чисел использует экспоненциальные формулы. Ста- Старейшая экспоненциальная формула для простых чисел названа по имени Мерсенна. Пусть п — натуральное число. Напомним, что n-ым числом Мерсенна называется М{п) = 2п - 1. Мы уже видели, что число М[п) составное, если таковым явля-
248 Мерсенн и Ферма ется п. Для п = rs имеем 2п - 1 = Bг)в - 1 = BГ - 1)BГ^-Ч + 2r(s> + • ■ • + 2Г + 1). Следовательно, М(г) — делитель числа М(п) = M(rs). Есте- Естественно, М(з) тоже делит М(п). Таким образом, при поиске простых чисел Мерсенна мы можем ограничиться исследованием М(р) с простыми р. Од- Однако утверждение о простоте всех таких М{р) не верно. В этом параграфе описывается метод разложения на множите- множители чисел Мерсенна с простым, но не слишком большим по- показателем. Главную движущую пружину метода дает общая формула делителей числа М(р), открытая Ферма. Для дока- доказательства формулы нам потребуется еще один результат из теории групп. Ключевая лемма. Пусть G — конечная группа с опера- операцией * и а € G. Натуральное число t удовлетворяет условию аг = е тогда и только тогда, когда t делится на порядок элемента а. Доказательство. Обозначим через s порядок элемента а. Делимость t на s означает равенство: t = rs при некотором натуральном г. В этом случае а* = (а*У = е. Для доказательства обратного утверждения предположим, что о* = е. Поскольку порядок элемента о является наимень- наименьшим натуральным числом, при котором а* = е, то s < t. Раз- Разделим t на s с остатком: t = sq + г, где 0 < г < з. Отсюда е = а* = (а')9*аг = ог (по условию, а* = е). Но ввиду неравенства г < s и выбора s последнее соотношение возможно, только если г = 0.
§ 10.1. Числа Мерсенна 249 Вернемся к числам Мерсенна. Предположим, что q — про- простой делитель числа М(р) = 2Р — 1, соответствующего про- простому р ф 2. Тогда 2Р = 1 (mod q). Это сравнение можно интерпретировать как равенство в груп- группе U(q) = Zq \ {0}, а именно: Что можно сказать о порядке элемента 2 группы U(q)? Из предыдущего соотношения и ключевой леммы вытекает, что он делит р. Но р — простое число, значит, порядком элемента 2 может быть только либо 1, либо р. Предположение о том, что 2 =1 приводит к противоречию: 1 = 0 (ввиду равенства 2 = Т+1). Следовательно, элемент 2 имеет порядок р в группе U(q). С другой стороны, по теореме Ферма V~l=T. в U(q). И опять ключевая лемма говорит нам, что порядок элемента 2 делит q — 1. Поскольку, как мы уже установили, он равен р, мы заключаем, что q — 1 = кр для какого-то натурального к. Полученное соотношение можно усилить. Действительно, число М(р) = 2Р — 1 — нечетное, так что все его делители тоже нечетны. В частности, разность q — 1 четна. Далее, из нечетности р вытекает, что число к в разложении q — 1 на множители должно быть четным. Следовательно, q — 1 = 2гр для некоторого натурального числа г. Мы доказали следую- следующий результат. Метод Ферма. Пусть рф1 — простое число, uq — про- простой делитель числа Мерсенна М{р). Тогда найдется такое натуральное г, что q = 1 + 2гр. Применим сформулированный метод к поиску делителя чи- числа МA1) = 2047. Согласно формуле, любой простой делитель
250 Мерсенн и Ферма числа МA1) имеет вид: q = 1 + 22г. Теперь нам предстоит вы- вычислить q при г = 1, 2, ... и выбрать из полученных результа- результатов делители числа МA1). Перед началом вычислений полезно подумать, как далеко нам следует заходить в этом процессе. Напомним (см.§ 3.2), что если q = 1 + 2гр — наименьший про- простой делитель составного числа М(р), то q = 1 + 2гр. А так как у/М(р) < 2р/2, из последнего неравенства вытекает, что 2Р/2 - 1 г < — . 2р При р = 11 это ограничение оставляет нам только два воз- возможных значения для г: 1 и 2. Подстановка г = 1 в формулу q = 1 + 22г дает q = 23. Элементарное деление показывает, что 23 действительно является множителем числа МA1) = 2047. Другой его простой делитель — это 89 = 1 + 22 • 4. Любопытно отметить, что если бы мы искали делители числа Af(ll) мето- методом проб, как в § 3.2, то нам пришлось бы безуспешно делить МA1) на каждое простое число, меньшее 23. А таких чисел 8. История чисел Мерсенна — кладезь курьезов и анекдоти- анекдотических случаев. Один из лучших — доклад Коула (Cole) на заседании Американского Математического Общества в 1903 году. Он доказал, что МF7) = 193707721 • 761838257287, перемножая эти числа в полной тишине. Аудитория с энтузи- энтузиазмом приняла доказательство! Простым способом получить такое разложение пока никто не смог. Как мы упоминали в главе 3, многие из известных больших простых чисел — числа Мерсенна. Конечно, есть способы про- проверки чисел Мерсенна на простоту более хорошие, чем метод Ферма. Наиболее часто употребляемый из них — тест Люка- Лемера, который мы объясним в § 10.4.
§ 10.2. Числа Ферма 251 § 10.2. Числа Ферма Мы уже видели, что если число М(п) = 2П — 1 простое, то п тоже простое. Это соображение наводит на мысль попытаться поискать значения п, при которых выражение 2П + 1 будет давать простые числа. Предположив, чтор = 2п+1 — простое, получим 2П = -Т в U(p). B.1) Следовательно, 22п = Т в U(p). Таким образом, по ключевой лемме порядок элемента 2 груп- группы U(p) делит 2п. Как и в предыдущей ситуации, мы должны точно вычислить этот порядок. Из равенства B.1) вытекает, что порядок элемента 2 не может ни равняться п, ни быть его делителем. Но он все же делит 2п, поэтому искомый порядок должен быть четным, т.е. равным 1т при каком-то натураль- натуральном г. Очевидно, г делит число п. Теперь, по определению порядка, 2 г = 1 в U(p), что можно переписать в виде равенства в Ър. 0 = 22г-1 = Bг-1)Bг+Т). По нашему предположению р — простое число. Значит 2Г = 1 (mod р) или 2Г = -1 (mod p). Следовательно, р делит одно из чисел: 2Г + 1 или 2Г — 1. Но ввиду соотношений: p = 2n + l,n^r, такое возможно только если г = п, т.е. порядок элемента 2 группы U(p) равен 2п. В силу равенства р — 1 = 2П, из теоремы Ферма вытекает, что 22" = 1 в U(p). Поэтому порядок элемента 2 (а он равен 2п) делит число 2П. В частности, п должно быть степенью двойки. Итак, если чи- число 2П + 1 — простое, то п — какая-то степень двойки.
252 Мерсенн и Ферма Именно по этой причине в поисках простых мы ограни- ограничиваемся числами вида F(k) = 22 , т.е. числами Ферма. Как уже было замечено в главе 4, Ферма полагал, что все такие числа простые. Это верно для F(k) при 0 < к < 4. Однако в 1730 году Эйлер показал, что число FE) составное. Как ни странно, метод Эйлера близок способу самого Ферма, который тот использовал для поиска делителей чисел Мерсенна (мы его описали в § 10.1). Посмотрим, как работает метод Эйлера. Предположим, что q — простой делитель числа F(k). Тогда 22* = -Т в U{q) B.2) и, по ключевой лемме, порядок элемента 2 делит 2fc+1. Но то же уравнение гарантирует, что этот порядок не может быть степенью двойки с показателем меньше к +1. Значит, порядок элемента 2 в группе U{q) в точности равен 2fc+1. Далее, по теореме Ферма порядок элемента 5 должен быть делителем числа q — 1; так что q — 1 = 2к+хг. Метод Эйлера. Если q — простой делитель числа F(k), то найдется такое натуральное г, что q = 1 + 2 +1г. Опираясь на метод Эйлера, найдем делитель числа FE) = = 235 + 1. Прежде всего, любой такой простой делитель пред- представляется в виде q = 1 + 64г. Таким образом, нам нужно определить, есть ли среди натуральных чисел представимых в виде q = 1 + 64г, делители числа FE). Огра- Ограничение на q дает оценку г < 1031; к сожалению, работать с такой большой границей неудобно. Наименьшее значение г, при котором число q простое, рав- равно 3, что соответствует q = 193. Вычисления показывают: 232 s
§ 10.2. Числа Ферма 253 Следовательно, 193 не делит число FE). При г = 4 мы имеем q = 257, тоже простое число, но 232 = 1 (mod 257), т.е. 257 также не является искомым делителем. Следующее значение г, при котором q будет простым, это г = 7, причем q = 449. И опять мимо: 232 _ Bi6J _ 4312 s 324 (mod 449) Следующее простое q = 577, что соответствует г = 9. В этом случае 232 = 287 (mod 577), т.е. 577 не делит FE). Наконец, г = 10 дает долгожданный делитель q = 641 числа FE). Нам еще повезло, что делитель оказался относительно ма- маленьким, и все необходимые вычисления при его поиске можно выполнить на электронном калькуляторе. Эйлер, естествен- естественно, проделал их вручную. К сожалению, такая удача выпада- выпадает нечасто. Проблема в том, что F(k) является дважды по- показательной функцией. Поэтому даже для относительно не- небольших значений к поиск делителей приходится производить среди очень большого количества кандидатов, что практиче- практически невозможно осуществить методом Эйлера. Однако найти делитель конкретного числа Ферма можно более удобными ме- методами (см. [33] и [37]). Более того, есть весьма эффективный тест, определяющий, является ли данное число Ферма про- простым или составным. Этим тестом мы займемся в следующей главе. О числах Ферма известно довольно много. Например, вы- выписаны разложения на простые множители чисел .F(ll) и всех F(k) при к < 9. Кроме того, найден по крайней мере один де- делитель для каждого из чисел F(k) при к < 32, за исключением к = 14, 20, 22, 24, 28 и 31. Получается, что среди чисел Ферма,
254 Мерсенн и Ферма которые мы знаем, простыми являются только F@),..., F{4) и возникает предположение, что других простых среди чисел Ферма нет. Почему же числа Ферма привлекают столь большое вни- внимание? Есть несколько причин, и конечно же не последняя среди них — наполненная драматическими событиями исто- история этих чисел. Кроме того, они служат хорошим источником трудных для разложения на множители больших чисел, что де- делает их прекрасным объектом для испытания возможностей новых алгоритмов. Алгоритмы разложения, в свою очередь, часто требуют от компьютера огромного числа повторяющих- повторяющихся простых арифметических и логических операций. Поэтому их прогонка на вновь создаваемых компьютерах довольно эф- эффективно помогает выловить недочеты в конструкции. Числа Ферма интересны и с теоретической точки зрения. В 1801 году Гаусс показал, что если правильный п-угольник можно построить с помощью циркуля и линейки, то п рав- равно некоторой степени двойки, умноженной на простое число Ферма. В частности, правильный 17-угольник можно постро- построить таким образом, поскольку 17 = FB), а начертить пра- правильный семиугольник, используя только циркуль и линейку, не удастся, так как 7 не является числом Ферма. Интересую- Интересующиеся этой проблемой могут обратиться к [6] ([Д.13]). § 10.3. И снова Ферма Наибольшее известное составное число Ферма — это чи- число FB3471); его делитель равен 5 ■ 223473 +1. Число FB3471) чудовищно велико, и у Вас, естественно, возникает вопрос: ка- каким замечательным алгоритмом удается найти его делитель? Ответить на него легко. Это метод Эйлера, описанный в пре- предыдущем параграфе. Однако вместо того, чтобы слепо сле- следовать Эйлеру, мы перевернем метод с ног на голову. Эйлер начинал с конкретного числа Ферма и пытался найти его де-
§ 10.3. И снова Ферма 255 литель. Мы же возьмем число, которое может быть делителем какого-то F(m), и будем искать соответствующее т. Алгоритм начинается с выбора двух натуральных чисел: к и п, первое из которых должно быть нечетным. Затем стро- строится число q = к • 2п + 1. Как следует из метода Эйлера, оно делит число Ферма F(m) тогда и только тогда, когда 22m=-l (modq). Для работы с большими числами, подобными упомянутому выше, нам потребуется очень эффективный способ вычисле- вычисления сравнении. Поскольку мы имеем дело только со степенями двойки, найти такой способ довольно просто, так как Теперь поступаем следующим образом. Для начала положим г = 22 и i = 5. Переменная г используется для хранения ин- информации о показателе. Мы стартуем с г = 5, потому что F(i) — простое при г < 5. Суть алгоритма состоит в замене г на вычет числа г2 по модулю q и увеличении г на 1 в каждом цикле. Останавливается алгоритм в одном из двух случаев: ли- либо г = q — 1, либо г — п. В первом из них q делит F{i), а во втором q не является делителем ни одного из F(i). Напомним, что если q = к • 2П + 1 делит число F(i), то г ^ п — 1. Этот метод с некоторыми изящными усовершенствовани- усовершенствованиями был использован Гостином (Gostin) при определении де- делителей чисел .FA5), .FB5), FB7) и FA47) (см. [19]). Он на- написал программу на языках Си и ассемблере, распараллелив некоторые процедуры. На первом этапе программа генериру- генерирует несколько миллионов возможных значений чисел q. Затем из них удаляются все, делящиеся на небольшие простые числа. Выжившие проверяются сравнениями, как объяснялось выше. На следующей странице пирведена часть таблицы из рабо- работы [19]. Она содержит те значения натуральных т, к и п, для которых к • 2п + 1 является множителем числа F(m).
256 Мерсенн и Ферма m 15 64 353 885 1082 1225 1451 3506 6390 6909 к 17 753 925 353 17 853 639 18 908 555 16 578 999 82 165 79 707 13 143 501 303 6021 п 17 67 355 887 1084 1231 1454 3508 6393 6912 § 10.4. Тест Люка — Лемера В этом параграфе мы представляем очень хороший тест, проверяющий на простоту числа Мерсенна. Первым его об- обнаружил Люка (известный нам как создатель «Ханойских ба- башен») в 1878 году. Затем тест был усовершенствован Лемером (D. H. Lehmer) в 1932 году, и теперь он называется тестом Люка — Лемера. Главная составная часть представляемого теста — после- последовательность натуральных чисел: Sq,S\,S2,---, определяемая рекуррентной формулой 5-0 = и Sk+i = Si - 2. Сначала мы покажем, что члены последовательности можно записать в виде сумм степеней некоторых иррациональных чи- чисел (см. упражнение 4 главы 6). Пусть из = 2+л/З и w = 2 — у/З. Докажем индукцией по п, что из2П + от2" = £„. D.1)
§ 10.4. Тест Люка — Лемера 257 Очевидно, (jj+w = Sq. Предположим, чтош2" '+ет2" 1 = Sn-i. Возводя в квадрат обе части равенства, получаем 2 + 2{wwJ ОП А. чО ш2 + 2{wwJ Поскольку ojw = 1, отсюда следует соотношение что, по определению, дает Sn. Тест Люка — Лемера. Пусть р — простое число. Чи- Число Мерсенна М(р) является простым тогда и только тогда, когда Sp-2 = 0 (mod M{p)). Мы докажем только необходимость условия теста, дока- доказательство достаточности выходит за рамки данной книги. Приводимое здесь доказательство опубликовано в [9]. Будучи элементарным по сути, оно оперирует иррациональными чи- числами таким способом, который трудно обосновать. Но если смириться с иррациональными числами, то в остальном про- проблем не будет, поскольку доказательство близко следует схе- схеме рассуждений из предыдущих параграфов. Чтобы понять, откуда появляются иррациональные числа, можно обратить- обратиться к [8]. Доказательство теста Люка — Лемера излагается на языке теории групп, но группы, используемые при этом, несколько более экзотичны, чем U{p). Отправная точка рассуждений — некое подмножество в совокупности Z[\/3] чисел вида а + Ь\/3, где о, 6 S Z. Эти числа можно складывать и умножать как вещественные. При этом сумма и произведение двух элементов из Щу/Ъ\ остается в данном множестве. Более того, подобно Z, совокупность Z[\/3], являясь группой относительно сложения, не будет таковой относительно умножения. Все упомянутые факты легко проверить. Заметим, что каждое число о S Z можно записать в виде а = а + Ол/3, так что Z С Z[\/3].
258 Мерсенн и Ферма Пусть теперь q > 0 — простое натуральное число. Введем обозначение Ясно, что 0 = Oq 6 I(q). Из равенства qa + q/3 = q(a + C) выте- вытекает, что сумма любых двух чисел из I(q) также принадлежит I(q). Более того, для любого a S Z[\/3] как qa, так и —qa ле- лежат в I(q). Таким образом, I(q) — подгруппа в аддитивной (по сложению) группе Z[\/3]. Как показано в § 9.8, отношение сравнения по модулю I(q) является отношением эквивалентности на множестве Z[\/3). Напомним, что если а,/3 € Z[\/3], то а = /3 (mod I(q)), ко- когда а — /3 S I{q) (см. упражнения 10 и 11 главы 5). Далее элемент a S Щ\/Щ записывается в виде а = 01+02\/3, где oi,O2 б Z. Разделив oi и аг на q с остатком, мы получим oi = 961 + ri и 02 = qbj. + Г2, причем 0 < r\, r-i < q. Обозначив сумму ri + Г2\/Ъ через р, можно записать - Р = foл/3). Значит, а = р (mod I(q)). Число р называется приведенной формой элемента а по модулю I(q). Поскольку остаток от де- деления целых чисел определен однозначно, каждый элемент из Z[\/3] имеет только одну приведенную форму по модулю I(q). Отметим, что в Z[\/3] существует ровно q2 различных приве- приведенных форм элементов по модулю I(q). Теперь каждый класс эквивалентности в Z[y^3] может быть представлен в приведенной форме. Более того, два класса, имеющие разные приведенные формы, должны быть различ- различными. Таким образом, множество Z9[\/3] классов эквивалент- эквивалентности по модулю I(q) состоит в точности из q2 элементов. Класс эквивалентности элемента a G Z[\/3] по модулю I(q) мы будем обозначать через 5. Определим умножение в Z9[\/3] по правилу оф = ар.
§ 10.4. Тест Люка — Лемера 259 Доказательство независимости результата умножения от вы- выбора представителей классов аналогично соответствующей про- проверке для арифметики остатков (см. § 5.3). Если а = Oi + 02\/3 и /3 = 61 + &2\/3, то простое вычисление показывает, что пред- представитель произведения 5/3 имеет вид: (oibi + 30262) + {aih + a2bi)\/3. Легко проверить, что умножение ассоциативно, коммутатив- коммутативно и имеет 1 в качестве единичного элемента. Однако Z9[\/3] не является группой по умножению (см. упражнение 9). Как и в случае арифметики остатков, мы преодолеваем эту труд- трудность, вводя множество V(q) обратимых по умножению эле- элементов из Z9[>/3]. Оно образует группу, поскольку произведе- произведение обратимых элементов множества Zj\/3] тоже обратимо, что легко проверяется (см. §9.4). Ввиду включения V(q) С Z9[VS] \ {0} порядок группы V(q) обязательно меньше, чем q2. Заметим также, что равенство ujw = 1 говорит об обратимости эле- элементов ш и w, т.е. w,m S V(q). Теперь мы готовы к доказа- доказательству корректности теста. Доказательство корректности теста Люка — Лемера. До- Допустим, что при некотором простом р число Мерсенна М(р) делит член последовательности Sp-2- Благодаря соотношению D.1), найдется такое натуральное г, что Умножая это равенство на ш2Р и используя тождество штх> = 1, получаем ш2" + 1 = гМ{р)ш2Р~\ D.2) Допустим теперь, что число М{р) составное и пусть q — его наименьший простой множитель. Приведем наше допуще- допущение к противоречию. Поскольку q делит М[р), из D.2) следует,
260 Мерсенн и Ферма ЧТО ш2" = -1 D.3) в Z9[\/3]. Возводя в квадрат равенство D.3), имеем Отсюда, руководствуясь ключевой леммой, делаем вывод: по- порядок элемента ш делит 2Р. С другой стороны, уравнение D.3) говорит нам, что он не может быть степенью двойки, мень- меньшей, чем 2Р. Итак, порядок элемента ш в группе V(q) равен 2Р. Далее, по теореме Лагранжа, порядок элемента ш делит поря- порядок группы V(q), а из-за того, что последний не превосходит q2 — 1, получаем неравенство 2Р < q2 — 1. Вспоминая теперь, что q — наименьший простой делитель числа Мерсенна М(р), можно оценить q2 сверху: q2 < M(p). Таким образом, 2Р < q2 - К 2Р - 1, что противоречит здравому смыслу. Итак, если М(р) делит член последовательности Sp-2, то число М(р) простое, т.е. мы доказали необходимость условия теста. Доказательство доста- достаточности смотри в [8]. Несмотря на трудности, связанные с доказательством кор- корректности теста, его очень легко реализовать и применить. В 1978 году два старшеклассника Лора Никель (Nickel) и Курт Нолль (Noll) с помощью теста Люка-Лемера доказали про- простоту числа МB1701) воспользовавшись локальной компью- компьютерной сетью местного университета. Их успех был отражен в передовице Нью-Йорк Тайме. Этот же тест лежит в осно- основе GIMPS, пакета программ «Great Internet Mersenne Prime Search»1 — свободно распространяемой (вместе с текстами программ) программной системой. Так что любой владелец персонального компьютера может заняться поиском больших 'Вы можете найти программное обеспечение GIMPS по адресу http://www.utm.edu/research/primes/.
Упражнения 261 простых чисел. Наибольшее из известных простых чисел Мер- сенна, состоящее из 909526 знаков, это МC021 377). Оно было открыто при помощи GIMPS в январе 1998 года. Упражнения 1. Пусть р, q — простые числа. Покажите, что если срав- сравнение хр = 1 (mod q) имеет решение х ф 1 (modg), то q = = 1 (modp). 2. Найдите все решения сравнения ж17 = 1 (mod 43). 3. Найдите образующие циклической группы U{\7). Поль- Пользуясь ими, решите сравнение 7х = 6 (mod 17). 4. Используйте метод Ферма для определения простых де- делителей чисел Мерсенна МB3) и МB9). Покажите, что число МG) — простое. 5. Покажите методом Эйлера простоту числа FD). 6. Пусть к ^ 2 — целое число и а = 22 ~2 B2* — 1). Обозна- Обозначим через р простой делитель числа F(k) = 22 +1. Покажите, что A) а2 = 2 (mod p); B) а имеет порядок 2fc+2 по модулю р\ C) р = 2к+2г + 1 для какого-то натурального г. Заметьте, что этот результат делает поиск делителей по ме- методу Эйлера несколько более эффективным. 7. Найдите число Ферма F(k), для которого 7 ■ 224 +1 явля- является простым множителем. 8. В 1640 году Френикль спросил Ферма через Мерсенна о том, найдется ли совершенное число в промежутке между 1020
262 Мерсенн и Ферма и 1022. Френикль имел в виду четные (или эвклидовы) совер- совершенные числа (см главу 3, упражнения 8, 9 и 10). Цель данного упражнения — повторить доказательство Ферма отсутствия четных совершенных чисел в названном промежутке. Напо- Напомним, что мы показали в упражнениях главы 3, упомянутых выше, что любое четное совершенное число может быть запи- записано в виде 2П~1BП — 1), где 2П — 1 — простое число Мерсенна. A) Покажите, что при n ^ 2 справедливо неравенство: —1 < lg(l — 2~п) < 0, где lg обозначает десятичный логарифм (т.е. логарифм по основанию 10). Выве- Выведите отсюда, что nlg2-l<lgBn-l)<nlg2. B) Логарифмируя неравенство 1020<2п-1Bп-1)<1022 и учитывая A), покажите, что 35 ^ п < 37. Не за- забудьте, что п — целое. C) Покажите, что М(п) не может быть простым при 35 < п < 37. За подробностями обратитесь к [49]. 9. Пусть д^О — простое число и V(q) — множество обра- обратимых элементов из Zff|V3]. A) Покажите, что 0 0 V(q). B) Покажите, что если а — целое число, не делящееся на q, то C) Найдите все элементы множества У E). 10. Запрограммируйте метод Ферма для поиска делите- делителей чисел Мерсенна. В качестве начальных данных программа использует простое р > 0, а выводить она должна наимень- наименьший простой делитель числа М(р) = 2Р — 1 или сообщение.
Упражнения 263 утверждающее, что число М(р) простое. Основу программы составляет алгоритм, представленный в § П.2 приложения, вы- вычисляющий вычет 2П по модулю q, где q = г • 2n+1 + 1 для не- некоторого г, такого, что 0 ^ г ^ [Bр/2 — 1)/2р] . Если вычет равен 1, то q — делитель числа М(р). Если в данном интервале простого делителя q не найдется, то М(р) — простое число. Заметьте, что перед вычислением вычета по модулю q нам со- совершенно не нужно разбираться с тем, является ли q простым числом. С помощью написанной программы найдите простые числа р, расположенные между 2 и 300, для которых М(р) — тоже простое (см. §4.2). 11. Реализуйте на компьютере алгоритм из § 10.3. Он дол- должен по простому числу р осуществлять поиск таких значений т, при которых р делит F(m). Конечно, Вам следует учиты- учитывать, что такого значения т может и не быть. Заметим, что если р = к • 2П + 1, то возможное значение m удовлетворяет неравенству т < п. Это дает нам верхнюю границу, поиск за которой заведомо обречен. Примените программу для нахо- нахождения чисел Ферма, делящихся на 37 • 216 +1 и 11131 • 212 = 1 соответственно. Заметьте, что на домашнем компьютере не- нельзя найти эти числа, если при этом придется вычислять все знаки соответствующих чисел Ферма.
Глава 11. Тесты на простоту и примитивные корни В этой главе мы доказываем знаменитую теорему Гаусса о цикличности группы U(p) при простом р. Она вдохновляет нас на создание теста, который, в отличие от тестов главы 7, проверяет простоту данного числа. Именно с этого теста мы и начинаем главу. § 11.1. Тест Люка Предположим, что мы хотим определить, является ли дан- данное нечетное число п простым. Один из возможных путей — попытаться показать, что порядок группы U(n) равен п — 1, т.е. имеет место равенство: </?(n) = n — 1. Если это так, то любое натуральное число а, меньшее п, должно быть взаим- взаимно простым с ним, что возможно только для простого п. На первый взгляд задача кажется безнадежной. Как пересчитать элементы в U(n), если п очень большое? Свет в конце тун- туннеля забрезжит после осознания следующей теоремы, которая доказывается в § 11.5.
§ 11.1. Тест Люка 265 Теорема о примитивных корнях. Если р — простое число, то U{p) — циклическая группа. Как следует из теоремы, в случае простого р в группе U(p) найдется элемент 6 порядка р — 1. Говоря языком формул, Ър = 1, и Ъг ф 1, еслиг<р —1. Это наводит на мысль о следующей стратегии. Предположим, что для натурального числа п нам как-нибудь удалось найти элемент b G U(n) порядка п — 1. По теореме Лагранжа поря- порядок элемента 6 должен делить порядок группы U(n), т.е. п — 1 делит <р{п). Однако <р(п) ^ п— 1, так что <р(п) = п — 1. Значит, п — простое число. Согласно теореме о примитивных корнях такой элемент всегда найдется, если п простое число. Теоре- Теорема, естественно, не утверждает, что этот элемент будет легко отыскать; чтобы его обнаружить, мы должны быть в хороших отношениях с удачей. Применение нашей стратегии к тестированию простоты конкретного числа требует несложного способа проверки фак- факта: данный элемент группы U(n) имеет порядок п — 1. Такой способ указывает нам сформулированный ниже тест, предло- предложенный Лемером в 1927 году. Он основывается на чуть более слабом тесте, авторство которого принадлежит Люка. Тест Люка. Пусть п — нечетное натуральное и Ь — целое число, подчиняющееся неравенству 2 ^ Ъ ^ п — 1. Если для каждого простого делителя р числа п — 1 справедливы следующие утверждения: A) Ьп~1 = 1 (mod n), B) Ь^ ф 1 (modn), то п — простое число. Доказательство. Обозначим через к порядок элемента Ъ группы U(n). Нам хотелось бы показать, что к = п — 1. По условию, Ь =1, поэтому ключевая лемма гарантирует де-
266 Гесты но простоту лимость n — 1 на к, т.е. п — 1 = kt для некоторого натураль- натурального t. Достаточно доказать, что t = 1. Допустим, это не так, т.е. t > 1. Тогда t делится на какое- то простое число q. Но если q делит t, то q делит и п — 1, иначе говоря, и 2=^, и | — целые числа. Более того, из равенства п-1 , t = к- - Я Я мы заключаем, что к делит а^-. Очередное применение ключе- ключевой леммы дает: Ь " =1, что противоречит предположениям теста. Следовательно, t = 1 и fc = n - 1. Теперь, по теореме Лагранжа, порядок элемента Ь должен делить порядок группы U(n), равный (р(п) ^ п — 1. Таким образом, </?(п) = п — 1 и п — простое число. Прежние тесты могли установить только разложимость того или иного числа. А тест Люка определяет его просто- простоту. Заметим, что для успешного применения теста Люка нам нужно знать полное разложение числа п — 1 на множители. К счастью, такое разложение во многих случаях легко полу- получить для целых семейств чисел; например, для чисел Ферма и их делителей. Нам должно только повезти с выбором кандида- кандидата Ь, в противном случае тест выдаст неопределенный ответ, даже если число простое. Опираясь на тест Люка, докажем тест на простоту для чи- чисел Ферма, впервые предложенный Жаном Франсуа Теофилом Пепэном (Jean Frangois Theophile Pepin) A826-1904). Тест Пепэна. Число Ферма F(k) является простым при данном к > 1, если и только если Предположим сначала, что сравнение из формулировки те- теста выполнено. Заметим, что единственным простым делите-
§11.1. Тест Люка 267 лем числа F(k) — 1 является 2. Поскольку 5^к)~^2 =-1^1 (mo в то время как из теста Люка вытекает, что F(k) — простое число. В обрат- обратную сторону тест доказывается труднее, с использованием квадратичного закона взаимности. Мы не будем приводить здесь этого доказательства. Заинтересованный читатель мо- может посмотреть полное доказательство теста в [23]. Опробуем тест Пепэна на доказательстве простоты чи- числа FD). Имеет место равенство ~ 1 .15 но 52" s 532768 s Итак, условия теста выполнены и FD) — простое число. Тест Пепэна легок в применении, поскольку он требует вычисле- вычисления только квадратов по модулю F(k), а это можно сделать довольно быстро. В качестве второго примера докажем, что число из повто- повторяющихся единиц ДA9) = JL 111 111 111 111 111 111, 19 простое. Прежде чем применять тест Люка, найдем полное разложение числа ДA9) — 1 на множители: ЯA9) - 1 = 2 • З2 • 5 • 7 • 11 • 13 • 19 • 37 • 52 579 • 333 667.
268 Гесты но простоту Сначала в качестве Ъ выберем 2. С помощью любой программы символьных вычислений легко показать, что 2ЯA9)-1 = Но, к сожалению, Значит, условие B) теста Люка не выполняется для Ь = 2 и р = 2, и мы опшблись в выборе кандидата. Затем положим 6 = 3. Применив программу символьных вычислений, найдем Таким образом, число 3 удовлетворяет условию A) теста, и нам нужно найти вычеты степеней по модулю ДA9) для каждого из простых делителей, участву- участвующих в разложении числа RA9) — 1. Сделаем это с помощью компьютера и сведем результаты в таблицу: Простой делитель р 2 3 5 7 И 13 19 37 52579 333667 Вычет з(дA9>-1)/р до модулю ДA9) ДA9) - 1 933000903779960656 97919522321038174 742392324159673027 920873402557886628 114592042672083983 10" 397724716798816350 760105763664485871 555602369615218624
§ 11.2. Еще один тест на простоту 269 Из таблицы видно, что условие B) теста Люка выполняется для каждого простого делителя числа ДA9) — 1. Следователь- Следовательно, RAQ) действительно простое число. Среди чисел, в записи которых участвуют только единицы (Д(/г)), известно всего лишь 5 простых. Первое, естественно, ДB) = 11 и ДA9) — второе из них; остальные — это ДB3), ЛC17) и ДA031). Доказать простоту числа RB3) несложно, если при этом руководствоваться усовершенствованным те- тестом Люка, который мы описываем в следующем параграфе (см. упражнение 4). § 11.2. Еще один тест на простоту Простой пример, приведенный ниже, проливает свет на од- одну из главных трудностей, с которой мы сталкиваемся, при- применяя тест Люка. Предположим, что мы хотим доказать про- простоту числа 41 с помощью этого теста. Сначала раскладываем п — 1 = 40 на множители: п — 1 = 23 ■ 5. Затем погружаемся в поиски числа Ь, заключенного между 2 и 40, которое удовле- удовлетворяло бы следующим условиям: Ь40 = 1 (mod 41), Ь20 ф 1 (mod 41), Ь* ф 1 (mod 41). Начиная проверять условия для 6 = 2, вскоре находим, что 220 = 1 (mod 41). Взяв другого кандидата, 6 = 3, мы, затаив дыхание, узнаем, что З20 = 40 (mod 41), но уже следующее сравнение, З8 = 1 (mod 41), подрезает нам крылья. Еще бо- более расстраиваемся, обнаружив, что 28 = 10 (mod 41). Таким образом, разные кандидаты удовлетворяют требуемым срав- сравнениям при разных простых делителях числа п — 1. Неприят- Неприятность в том, что необходим один кандидат, удовлетворяющий
270 Гесты на простоту всем сравнениям. В случае п = 41 наименьшее такое число равно 7. В 1975 году Брилхарт (Brilhart), Лемер и Селфридж (Self- ridge) поставили себе целью так усовершенствовать тест Лю- Люка, чтобы для разных простых делителей числа п — 1 можно было находить вычеты различных чисел Ь. Это намного бы упростило применение теста. Результат их усилий сформули- сформулирован ниже. Тест на простоту. Пусть п — нечетное натуральное число, причем n-l=p?-tfrt где Pi < ••• < рг — простые числа. Если для каждого i = = 1,2,... ,г существует такое целое число 6» B ^ Ь( ^ п— 1), что о?'1 = 1 (mod п) и ЬУ<~ ф 1 (mod n), то п — простое. Отметим, что числа Ъг не обязательно должны быть раз- различными. Доказательство. Пусть i = 1. Определим сначала порядок s\ элемента Ъ\ в группе U(n). Из ключевой леммы и сравнения Ь" = 1 (mod n) следует, что порядок s\ делит п — 1. Поэтому простые числа, участвующие в разложении si на множители, находятся среди делителей числа п — 1, т.е. sl — Pi Pr i rflefei <ei, ..., kr <er. n=l С другой стороны, нам известно, что 6jP1 ^ 1 (modn). Значит, ^^ не делится на si. Но
§ 11.2. Еще один тест на простоту 271 Сравнивая разложения чисел si и —- и учитывая при этом, что si не делит а^-, мы убеждаемся в равенстве fci = e\. Дру- Другими словами, pf1 делит з\. Напомним, что через s\ мы обозначили порядок элемента Ъ\ группы U(n). По теореме Лагранжа он должен делить по- порядок (р(п) группы U(n). А так как р*1 — делитель s\, то р*1 делит и ip(n). Аналогичными рассуждениями можно показать, что <р(п) делится на каждую из степеней Р22)Р§3) • • ■ iPrr> Поскольку ка- каждая из них — степень простого числа, причем все эти про- простые различны, степени PiSp^2) • • • >Ргг попарно взаимно про- просты. Отсюда, ввиду леммы из главы 7, получаем, что произ- произведение тоже делит <р{п). Учитывая неравенство <р(п) ^ п — 1, замеча- замечаем, что такое возможно, только если </?(n) = n — 1. Итак, п — простое число. Наконец, собирая вместе результаты различных глав, мы обретаем эффективную стратегию тестирования простоты. Допустим, что нам дано большое нечетное число п. Чтобы узнать, является ли оно простым, поступаем следующим обра- образом: A) проверяем, делится ли п на какое-нибудь простое число, не превосходящее 5000; B) если п не делится ни на одно из них, применяем к нему тест Миллера, используя в качестве оснований первые 20 простых чисел; C) если тест Миллера по всем этим основаниям дает неопре- неопределенный ответ, то подвергаем п тесту на простоту.
272 Тесты на простоту §11.3. Числа Кармайкла Мы видели, что числа Кармайкла можно определить в тер- терминах разложения на простые множители. Это утверждает теорема Корселта, неполное доказательство которой мы при- привели в § 7.2. Поскольку для окончания доказательства требо- требовалась теорема о примитивных корнях, теперь мы в состоя- состоянии завершить доказательство. Напомним формулировку те- теоремы. Теорема Корселта. Нечетное целое число п > 0 явля- является числом Кармайкла, если и только если для каждого его простого делителя выполнены следующие два условия: A) р2 не делит п; B) р — 1 делит п — 1. Мы проверили в § 7.2, что из предположений A) и B) те- теоремы следует: число п является числом Кармайкла. Кроме того, мы показали, что числа Кармайкла удовлетворяют усло- условию A), так что нам осталось проверить истинность утвер- утверждения B) для чисел Кармайкла. Как раз в этом месте нам потребуется теорема о примитивных корнях. Пусть п — число Кармайкла. Тогда Ьп = Ь (mod n) для каждого целого Ь. Если р — простой делитель числа п, то по теореме о примитивных корнях группа U(p) циклическая, порожденная некоторым классом a G U{p). Поскольку п — число Кармайкла, ап —а должно делиться на п. Поэтому ап — а должно делиться на любой делитель чи- числа п, в частности, ап — а делится на р, т.е. ап = a (mod p). Ввиду простоты числа р, элемент а обратим по модулю р. Сле- Следовательно, an~l = I (mod p) и из ключевой леммы вытекает, что порядок элемента а делит п — 1. Однако порядок а ра- равен р — 1, потому что элемент а — образующая группы U(p). Значит, р — 1 делит п — 1, и доказательство закончено.
§ 11.4. Предварительные замечания 273 § 11.4. Предварительные замечания В этом параграфе мы докажем некоторые факты о поряд- порядках элементов абелевои группы, необходимые для доказатель- доказательства теоремы о примитивных корнях. Лемма. Если в абелевои группе G есть два элемента порядков г us, то в ней найдется элемент, порядок которого равен наименьшему общему кратному г и s. Доказательство теоремы о примитивных корнях, приве- приведенное в следующем параграфе, носит конструктивный харак- характер, и доказательство леммы, сформулированной выше, будет его важной составной частью. Нам не достаточно информации о том, что такой элемент можно отыскать, нам потребуется метод его построения. Доказательство. Как обычно, обозначим операцию в груп- группе G символом *. Предположим, что ажЬ — элементы группы G порядков гив соответственно. Разложим порядки г и s на простые множители: r = p?'"Pfc* и e = pf---rf, где pi,... ,pk — различные простые числа. Обратите внима- внимание, что в двух разложениях участвуют одни и те же простые множители. Это, конечно, не означает, что гив имеют одина- одинаковые простые делители. Бели, например, один из выписанных делителей, скажем р,-, не участвует в разложении порядка г, то его степень ej равна 0. Заметим также, что мы не будем придерживаться стан- стандартного соглашения о возрастании простых делителей в спис- списке: pi,... ,pjfe. Для доказательства леммы нам удобнее считать, что простые делители выписаны в таком порядке: для некото- некоторого 1 < g < k ei > /i, e2 > /г, ..., eg > fg и eg+i
274 Тесты на простоту Введем обозначения г' — nei ... пе' w я' — t/9+1 . . . т/* Г —Pi ---Рд И S -Pg+i •••Рк . Заметим, что простые делители чисел г' и s' различны, по- поэтому НОД(г', s') = 1. С другой стороны, rV — произведение степеней простых чисел Pi,... ,Рк- Более того, кратность, с ко- которой каждое простое pi входит в разложение числа rV, рав- равна наибольшему из показателей е$ и fa. Таким образом, rV — наименьшее общее кратное порядков г и s. Поскольку г' делит гид' делит s, найдутся такие натураль- натуральные и и v, что г = г'и и s = s'u. Напомним, что а — элемент порядка г группы G, а Ь — элемент порядка s той же груп- группы. Мы хотим показать, что порядок произведения с = au-kb" равен rV, т.е. наименьшему общему кратному порядков г и s. Прежде всего напомним, что по предположению леммы груп- группа G абелева. Для доказательства леммы нам потребуется сле- следующее свойство операции *: если х,у EG, то (z*y)q = xq*yq. Заметим, что некоммутативная операция таким свойством не обладает. На самом деле, лемма справедлива только для абе- левых групп. В случае произвольной группы лемма не верна, что иллюстрируется примером в конце параграфа. Итак, обозначим символом m = r's' наименьшее общее кратное порядков г и s, а символом п — порядок элемента с. Как г, так и s делят число т, и можно записать: т = rt = sq при некоторых натуральных t ъ q. Имеем ст = (aw * bv)m = oum * Ь™ = (ar)ut * (Ь8)^ = е, и из ключевой леммы следует, что п должно делить т. С другой стороны, поскольку п — порядок элемента с, то e = cn = aun*bvn.
§ 11.4. Предварительные замечания 275 Значит, е = {аип *ЬШ)Г> = {ar>u)n*bvnr> = bvnr', потому что т'и = т - порядок элемента а. Из ключевой лем- леммы следует, что порядок элемента b (который равен s) должен делить vnr'. Ввиду равенства s = s'v, мы заключаем, что s' де- делит пг'. Однако г' us' — взаимно просты. Поэтому п делится на s' (см. лемму из §3.6). Аналогичные рассуждения показывают, что г' делит п. Та- Таким образом, взаимно простые числа г' и s' делят п. Следова- Следовательно, по лемме из § 3.6 число п должно делиться на произве- произведение r's' = m. В итоге мы доказали делимость натуральных чисел тип друг на друга, т.е. ^, j-j £ Ъ. Так может быть только в слу- случае равенства m = п. Иными словами, порядок построенного нами элемента с равен наименьшему общему кратному поряд- порядков гид. В качестве легкого следствия из доказательства леммы по- получаем: если гид взаимно просты, то г' = г, s' = s, и = v = 1 ис=о*Ь — элемент порядка rs группы G. В общей ситуации для построения с нам нужно знать элементы a, b и разложение их порядков г и s на простые множители. Наконец, разберем обещанный ранее пример. Он показы- показывает, что требование о коммутативности операции в группе G нельзя выбросить из леммы без ущерба для ее истинности. Рассмотрим группу 2?з симметрии правильного треугольни- треугольника. Напомним, что она не является абелевой группой. Возь- Возьмем осевую симметрию о\ и поворот р. Порядки этих элемен- элементов равны, соответственно, 2 и 3. Если бы утверждение леммы оставалось верным и для не абелевых групп, то в £>з нашелся бы элемент порядка 6. Но такого элемента в ней нет. Если мы, проигнорировав неабелевость группы Dz, выпишем элемент с по рецепту доказательства леммы, то увидим: с = о\р = а% — элемент порядка 2.
276 Тесты на простоту § 11.5. Примитивные корни Пусть р > 3 — простое число. Как уже неоднократно отме- отмечалось, порядок циклической группы U(p) равен <р(р) = р— 1 — четному составному числу. Образующая этой группы назы- называется примитивным корнем. Употребление слова «корень» в этом контексте подразумевает какой-то многочлен. Это легко объяснимо. По теореме Ферма все элементы группы U(p) — корни полиномиального уравнения хр-1 — 1 = 0 с коэффици- коэффициентами из Ър. Образующая группы U(p) называется прими- примитивным корнем из-за того, что все остальные корни этого уравнения представляются в виде ее степеней. Аналогичный феномен наблюдается при решении уравнений с комплексны- комплексными коэффициентами. Например, у уравнения хр — 1 = 0 есть примитивный корень cos ( — 1 + i sin ( — J. Мы приведем конструктивное доказательство существова- существования примитивных корней. Точнее, мы опишем алгоритм для вычисления примитивных корней по модулю р. Существование примитивных корней по простому модулю было предсказано еще Л. Эйлером, но первое верное доказательство этого факта опубликовал Гаусс в своей книге «Арифметические исследова- ния»(см. [17]). Теорема о примитивных корнях. Если р — простое число, то U(p) — циклическая группа. Доказательство. Утверждение теоремы очевидным обра- образом выполнено при р = 2 и р = 3, поэтому можно предпола- предполагать, что р ^ 5. Выберем произвольный элемент a\ G U(p), где 1 < ai < р— 1. Ввиду произвольности выбора, на практике всегда можно начинать с а\ = 2. Обозначим через к\ порядок элемента ai. Если к\ = р — 1, то мы уже нашли образующую группы U{p). Итак, можно считать, что fei < р — 1. Класс а\ удовлетво- удовлетворяет уравнению xkl — 1 = 0 в Zp. Поскольку число р простое,
§ 11.5. Примитивные корни 277 из теоремы § 6.4 следует, что это полиномиальное уравнение не может иметь более, чем ki различных решений. С другой стороны, все элементы множества являются решениями уравнения xkl — 1 = 0. Множество Н состоит ровно из fci различных элементов. Поэтому оно со- содержит все корни этого уравнения. Но, по предположению, fci < р — 1, значит, в группе U(p) найдется какой-то элемент Ъ, не попавший в множество Н. В частности, Ъ не является корнем уравнения ж*1 — 1 = 0, и по ключевой лемме порядок г элемента b не делит ki. Бели г = р — 1, то Ь — образующая группы U(p), и теорема доказана. Пусть г < р — 1. По лемме § 11.4, в группе U(p) су- существует элемент аг, порядок которого &2 равен наименьшему общему кратному чисел ki и г. Мы уже заметили, что г не делит к\, поэтому &2 > к\. Те- Теперь нам остается продолжать описанную процедуру до тех пор, пока мы не найдем элемента порядка р—1. Процесс обяза- обязательно закончится выбором образующей группы U(p), потому что на каждом этапе мы находим все большие натуральные числа к{: ki < к2 < кз-.., но все они меньше, чемр — 1. Описанная процедура предоставляет систематический ме- метод поиска образующей группы U(p), но при этом не всегда получается наименьшая из возможных образующих. Заметим, что утверждение, обратное теореме, неверно. Например, груп- группа 1/D) циклическая, хотя число 4 составное. Таким образом, цикличность группы U(n) не гарантирует простоты п. На са- самом деле можно показать, что U(n) — циклическая группа тогда и только тогда, когда п равно 1, 2, 4, р* или 2рк, где р — простое нечетное число. Доказательство этого результа- результата изложено в [18] ([Д.З]).
278 Гесты но простоту § 11.6. Вычисление порядков Здесь мы применяем метод Гаусса, описанный в §11.5, к поиску образующей группы 17D1). Но сначала нам нужно при- придумать простой способ вычисления порядков элементов груп- группы U(p). Пусть р — простое нечетное число и a G U(p). Вычислим порядок к элемента а. По теореме Лагранжа порядок к должен делить число (р(р) = р—\ — порядок группы U(p). Допустим, нам известно разложение числа р — 1 на простые множители: р-1 = 9? •■•ОЙ', где gi < <7г < • • • < Чт — простые, a ei,... вщ — натуральные числа. Заметим, что если мы не сможем разложить на мно- множители число р — 1, то мы вообще не сможем воспользоваться методом Гаусса. Итак, поскольку к делит р— 1, найдутся такие неотрицательные целые числа г\,... rm, что — 41 Чт » причем 0 < п < ei, ..., 0 < гт < ет. Значит, для вычисления порядка к нам достаточно опреде- определить показатели г\,... гт. Покажем, как находится г\; осталь- остальные показатели находятся аналогично. Сначала выписываем последовательность по модулю р. Заметим, что по теореме Ферма первый элемент этой последовательности всегда равен 1. Предположим, что w — наибольшее неотрицательное число, для которого а(р-1)/яГ=1 (modp). F.1) Тогда либо w = ei, либо +1 ф 1 (modp). F.2)
§ 11.6. Вычисление порядков 279 Из сравнения F.1) и ключевой леммы вытекает, что к делит (р — l)/qf. С другой стороны, благодаря F.2), мы видим, что к не делит (р — l)/q™+1. Другими словами, к = q[l • • • qr£ делит произведение но не делит ei-tu-l е2 ... ет _ Р~ * 41 ?2 Чт — tu+1 " Такое возможно лишь в случае г\ = в\ — w, что дает нам алго- алгоритм вычисления показателя г\. Вернемся к нашему примеру. Как упоминалось в доказа- доказательстве теоремы о примитивных корнях, в качестве отправ- отправной точки метода Гаусса удобно выбрать 2. Определим по- порядок этого элемента. Прежде всего, согласно разработанной схеме, нам нужно разложить порядок группы ?7D1) на про- простые множители. Имеем: у>D1) = 40 = 23 • 5. Далее вычисляем Итак, простое число 2 входит в разложение порядка элемен- элемента 2 с кратностью 3 — 1 = 2. Повторим те же действия со следующим простым делителем 5. Несложные вычисления по- показывают, что 2^ =28=Т0^Т. Значит, кратность пятерки в порядке элемента 2 равна 1—0=1, и 2 имеет порядок 22 • 5 = 20. В частности, 2 не является образующей группы 1/D1). Далее нам нужно выбрать другой элемент группы ?7D1), отличный от степеней элемента 2, скажем, 3. Вычислим его
280 Гесты но простоту порядок. Имеем: 3^=40^1 и 3^=1. Из первого соотношения мы заключаем, что 8 делит порядок элемента 3, а из второго — что 5 этот порядок не делит. Сле- Следовательно, порядок элемента 3 равен 8. Далее, как мы делали в § 11.4, нам предстоит разложить на множители г = 20 (порядок элемента 2) и s = 8 (порядок элемента 3). Поскольку г = 22 • 5 и s = 23, мы выбираем г' = 5 и s' = 23. Это, в обозначениях § 11.4, дает и = 22 и v = 1. Те- Теперь, следуя рецепту из доказательства леммы § 11.4, строим элемент с = Г-Г=54.31 = 7 группы J7D1), порядок которого равен r's' = 40. Таким обра- образом, 7 — образующая группы UD1). Упражнения 1. Используя тест на простоту из § 11.2, покажите, что 991 простое число. 2. Докажите, что если п — нечетное натуральное число, причем п — 1 делится на 4, то (п — 1)^ = 1 (mod n). 3. С помощью теста из § 11.2 докажите простоту числа МG) = 27 - 1. Указание: Если р = 27 — 1, то 27 = 1 (mod p). 4. Используя тест § 11.2 и какую-нибудь программу сим- символьных вычислений, покажите, что RB3) простое число. 5. Пусть р — простое число, п = 2р -\-1 и q — простой делитель числа п. Предположим, что 2n-1 = 1 (mod п)ипне делится на 3.
Упражнения 281 A) Покажите, что порядок элемента 4 в группе U(q) равен р. B) Покажите, что q представляется в виде кр + 1 для некоторого натурального к. C) Выведите из неравенства q < п , что к = 1. D) Опираясь на предыдущие три пункта, покажите, что п должно быть простым. Указание к п. A): 2n-1 = 4? и 4я = 1 (mod n) (по предположе- предположению). Бели q — простое, то это сравнение остается в силе и по модулю q. 6. Покажите, что A) если Ь — простое число и к > 3, то Ь2 ~ = l(mod2fc); B) при к > 3 группа UBk) не является циклической. Указание к п. A): примените индукцию по к, начиная с к = 3. 7. Цель данного упражнения — описать еще один тест на простоту. Он основывается на теореме Вильсона (Wilson), сформулированной в п. C). A) Пусть G — конечная абелева группа; операцию в ней мы будем называть умножением. Покажите, что произведение всех элементов группы G равно про- произведению всех ее элементов порядка 2. B) Пусть р — простое число. Покажите, что в группе U(p) нет элементов порядка 2, отличных от C) Используя первые два пункта, покажите, что (р - 1)! = -1 (mod p). Этот результат называется теоремой Вильсона. D) Покажите, что всякое составное число п удовлетво- удовлетворяет соотношению (п — 1)! = 0 (mod n). E) Учитывая C) и D), мы получаем следующий тест на простоту. Натуральное число п является простым
282 Тесты но простоту тогда и только тогда, когда (п — 1)! = —1 (mod п). Почему этот способ недостаточно эффективен? 8. По методу Гаусса найдите образующую группы С/G3). Именно этот пример привел Гаусс в книге «Арифметические исследования». 9. Пусть р — нечетное простое число. A) Покажите, что если а нечетно и элемент а — обра- образующая группы U(p), то класс, соответствующий а в группе UBp), также является образующей этой группы. B) Покажите, что если а четно и элемент а — образую- образующая группы U(p), то класс, соответствующий а + р в группе UBp), также является образующей этой группы. C) Докажите, что группа UBp) циклическая. 10. Пусть G — конечная циклическая группа порядка п с образующей дик — натуральное число. A) Покажите, что дк является образующей группы G тогда и только тогда, когда к взаимно просто с п. B) Используя п. A), покажите, что G имеет <р(п) обра- образующих. C) Сколько образующих у группы U(p) в случае про- простого р? 11. Напишите программу, реализующую тест Пепэна. Ее начальными данными служит показатель n ^ 0, а выдавать она должна сообщение о простоте или разложимости числа F(n). Заметим, что программа, по сути, должна состоять из алгоритма, описанного в § П.2 приложения, вычисляющего сте- степени в арифметике остатков. Какое наибольшее число п Вам удается протестировать этой программой? 12. Напишите программу, реализующую тест на простоту из упражнения 7. Основой программы должен быть алгоритм,
Упражнения 283 вычисляющий вычет числа (п — 1)! по модулю п. Бели Вы сна- чала вычислите (п — 1)!, а потом будете определять его вычет, то программа сможет работать только с небольшими значе- значениями п. Вместо этого следует находить вычет на каждом шаге при вычислении (п — 1)!. Сколько времени требуется Ва- Вашей программе на тестирование наибольшего простого числа, не превосходящего 10* при к = 1,..., 6? Отталкиваясь от этих данных, предположите, сколько времени программа будет про- проверять простоту числа, состоящего из 100 знаков.
Глава 12. Система шифрования RSA Наконец-то настало время заняться описанием RSA-крип- тосистемы. Помимо объяснения, как она работает, мы должны в деталях обсудить ее безопасность; другими словами, почему настолько трудно взломать сообщение, зашифрованное RSA- криптосистемой? § 12.1. О начале и конце Чтобы реализовать систему шифрования RSA, предназна- предназначенную для одного пользователя, необходимо выбрать два раз- различных простых числа р и q и вычислить их произведение п = pq. Простые р и q хранятся в тайне, в то время как число п становится частью открытого ключа. В § 12.5 мы подробно обсудим метод выбора простых составляющих ключа, а также то, как этот выбор связан с надежностью системы. Сообщение (которое можно считать целым числом) ши- шифруется путем возведения в некоторую степень по модулю п. Поэтому сначала мы должны найти способ представить текст сообщения в виде списка классов по модулю п. Это, в действи- действительности, еще не процесс шифрования, а только подготовка сообщения к тому, чтобы его можно было зашифровать.
§ 12.1. О начале и конце 285 Для простоты предположим, что текст сообщения содер- содержит только слова, записанные заглавными буквами. Таким образом, сообщение, в конечном счете, — последовательность букв и пробелов. Первый шаг состоит в замене каждой буквы сообщения числом, которое выбирается из следующей табли- таблицы: А 10 Б 11 В 12 Г 13 д 14 Е 15 Ж 16 Л 21 М 22 Н 23 О 24 П 25 Р 26 С 27 3 17 Т 28 И 18 У 29 Й 19 Ф 30 К 20 X 31 Ц 32 Ч 33 Ш 34 Щ 35 Ъ 36 Ы 37 Ь 38 Э 39 Ю 40 Я 41 Пробел между словами заменяется на число 99. Проделав эту процедуру, мы получим число, возможно очень большое, если сообщение было длинным. Однако, это еще не оконча- окончательное число, к которому мы стремимся, а всего лишь набор классов по модулю п. И теперь нам нужно разбить численное представление сообщения на кусочки, каждый из которых — натуральное число, не превосходящее п. Эти кусочки принято называть блоками сообщения. Например, численное представление девиза «ПОЗНАЙ СЕ- СЕБЯ» выглядит так: 2524172310199927151141. Выбрав простые р = 149 и q = 157, мы получим произведение п = 23 393. Поэтому численное представление сообщения, вы- выписанное выше, нужно разбить на блоки, меньшие чем 23 393. Приведем одно из таких разбиений. 2524 - 1723 - 10199 - 9271 - 511 - 41. Конечно, выбор блоков не однозначен, но и не совсем произ- произволен. Например, во избежание двусмысленностей на стадии
286 Система шифрования RSA расшифровки не следует выделять блоки, начинающиеся с ну- нуля. При расшифровке сообщения, зашифрованного системой шифрования RSA, получают последовательность блоков. За- Затем их соединяют вместе и получают численное представление сообщения. И только после замены чисел буквами в соответ- соответствии с приведенной таблицей можно будет прочесть исходное сообщение. Обратите внимание на то, что каждая буква таблицы коди- кодируется двузначным числом. Так делается для предотвращения путаницы. Предположим, мы пронумеровали буквы по поряд- порядку, начиная с 1, т.е. А соответствует 1, Б — 2, и так далее. В этом случае мы не сможем точно сказать, обозначает ли блок 12 пару букв АБ, или только одну букву Л, двенадца- двенадцатую букву алфавита. Конечно, для численного представления сообщения можно использовать любое однозначное соответ- соответствие между буквами и числами, например, ASCII-кодировку, при которой перевод сообщения в цифровую форму автома- автоматически выполняется компьютером. § 12.2. Шифровка и дешифровка Сообщение, подготовленное к шифровке по методу § 12.1, состоит из последовательности блоков, каждый из которых — число, меньшее, чем п. Теперь обсудим, как шифруется ка- каждый блок. Для этого нам потребуется число п, равное про- произведению простых р и q, и натуральное число, обратимое по модулю <р{п), т.е. число е, удовлетворяющее условию Напомним, что по известнымрид число </>(п) легко вычисля- вычисляется. Действительно,
§ 12.2. Шифровка и дешифровка 287 Пара (п, е) называется открытым, или кодирующим, ключом криптосистемы RSA, которую мы описываем. Пусть Ь — блок сообщения, то есть целое число, удовлетворяющее неравенству О < Ь < п — 1. Символом ЕF) мы будем обозначать блок заши- зашифрованного сообщения, соответствующий Ь. Он вычисляется по следующему правилу: ЕF) = вычет Ье по модулю п. Заметим, что каждый блок сообщения шифруется отдель- отдельно. Поэтому зашифрованное сообщение, фактически, состо- состоит из отдельных закодированных блоков. Более того, мы не можем объединить эти блоки в одно большое число, посколь- поскольку в результате расшифровать сообщение станет невозможно. Вскоре мы увидим причину этого. Вернемся к примеру, который начали рассматривать в пер- первом параграфе. Мы зафиксировали р = 149 ид = 157, так что п = 23393 и (р(п) = 23088. Теперь нужно выбрать число е. Напомним, что оно должно быть взаимно простым с <р(п). Наименьшее простое число, не делящее 23088, равно 5. По- Положим е = 5. Чтобы закодировать первый блок сообщения из § 12.1, нам предстоит определить вычет числа 25245 по мо- модулю 23 393. С помощью программы символьных вычислений (или калькулятора, если хватит терпения) мы получим, что искомый вычет равен 22 752. Итак, ЕB524) = 22 752. Все же зашифрованное сообщение представляется следующей после- последовательностью блоков: 22 752 - 6198 - 14 204 - 23191 - 10 723 - 14 065. Посмотрим, как декодируются блоки зашифрованного со- сообщения. Чтобы приступить к дешифровке, нам необходимо знать п и обратный элемент к е по модулю ц>(п). Последний из них — это натуральное число, которое мы будем обозначать через d. Пара (n, d) называется секретным, или декодирую- декодирующим ключом системы шифрования RSA. Бели а — блок заши- зашифрованного сообщения, то соответствующая его дешифровка
288 Система шифрования RSA D(a) получается в результате операции: D(a) = вычет ad по модулю п. Прежде чем вернуться к примеру, необходимо дать некоторые комментарии. Во-первых, вычислить d очень легко, если знать (р(п) и е. Действительно, секретный ключ определяется с помо- помощью расширенного алгоритма Евклида. Во-вторых, если Ь — блок исходного сообщения, то мы вправе ожидать равенства D(EF)) = Ь. Другими словами, декодируя блок шифрованного сообщения, мы надеемся узнать соответствующий блок исход- исходного. То, что это так и будет, не следует непосредственно из описанного выше алгоритма, но мы все подробно обсудим в следующем параграфе. Наконец, как мы утверждали во введении и на протяже- протяжении всей книги, для взлома RSA-криптосистемы необходимо разложить п на множители, потому что для дешифровки со- сообщения нужно знать р и q. Однако после того, как работа системы подробно описана, ясно, что последнее утверждение не совсем точно. Чтобы прочесть шифровку, кроме самого п, нужно знать только d, обратный к е элемент по модулю <р(п). Поэтому для взлома системы достаточно вычислить d при из- известных п и е. Оказывается, это вычисление равносильно раз- разложению числа п на множители, как мы убедимся в § 12.4. В обсуждаемом примере п = 23393 и е = 5. Для опреде- определения d применим расширенный алгоритм Евклида к числам V?(m)=23088h5. остаток 23088 5 3 2 1 частное * * 4617 1 1 X 1 0 1 -1 2 У 0 1 -4617 4618 -9235
§ 12.3. Почему она работает? 289 Таким образом, 23088 • 2 + 5 • (-9235) = 1. Следовательно, обратным к 5 по модулю 23 088 будет —9235 и d = 23 088 -9235 = 13 853 — наименьшее натуральное число, сравнимое с —9235 по мо- модулю 23 088. Значит, для раскодирования блока шифрованного сообщения мы должны возвести его в степень 13 853 по моду- модулю 23 393. В нашем примере первый закодированный блок — это 22 752. Вычисляя вычет числа 22 75213853 по модулю 23 393, получим DB2 752) = 2524. Заметьте, что даже при таких малых числах требования, предъявляемые при работе RSA- криптосистемы, превышают возможности большинства кар- карманных калькуляторов. § 12.3. Почему она работает? Как мы уже отмечали ранее, шаги, описанные выше, при- приводят к работающей криптосистеме, только если в результате декодирования каждого блока шифрованного сообщения будет восстанавливаться соответствующий блок исходного. Предпо- Предположим, что мы имеем дело с системой RSA, имеющей откры- открытый ключ (п, е) и секретный ключ (n, d). Придерживаясь обо- обозначений § 12.2, нам нужно показать, что для любого целого числа Ь, удовлетворяющего неравенству 0 ^ Ь ^ п — 1, выпол- выполняется тождество D(EF)) = Ь. На самом деле, достаточно доказать, что D(EF)) = Ь (mod n). Действительно, как 6, так и D(EF)) — неотрицательные це- целые числа, меньшие п. Поэтому они сравнимы по модулю п то- тогда и только тогда, когда они равны. Это, в частности, объяс- объясняет, почему мы разбиваем численное представление сообще- сообщения на блоки, меньшие п. Кроме того, отсюда видно, что блоки
290 Система шифрования RSA закодированного сообщения необходимо записывать отдельно: в противном случае наши рассуждения не будут работать. Из рецептов шифрования и дешифрования следует, что D(EF)) = (be)d = bed (modn). C.1) Поскольку элементы d и е взаимно обратны по модулю <р{п), найдется такое натуральное Л, что ed = 1 + ktp(n). Более того, по условию, числа end больше 2 и <р(п) > 0. Следовательно, к > 0. Подставляя 1 + ktp(n) вместо произведения ed в уравне- уравнение C.1), получаем bed = Теперь воспользуемся теоремой Эйлера, которая утверждает, что W^ = 1 (mod n). Отсюда be<i = b (mod n), т.е. D(EF))=b (modn), и мы полностью получили бы доказательство, если бы в него не закралась маленькая ошибочка. Внимательно просмотрев еще раз наши рассуждения, Вы заметите, что мы не учитывали условий теоремы Эйлера. На самом деле, прежде чем применять теорему, необходимо убе- убедиться во взаимной простоте чисел b и п. За этим, казалось бы, нужно следить при подготовке сообщения к шифровке, т.е. во время разбиения численного представления сообщения на блоки нужно добиваться уверенности в том, что все получа- получающиеся блоки Ь взаимно просты с п. К счастью, в этом нет необходимости, потому что на самом деле сравнение выпол- выполнено для любого блока. И ошибка кроется не в результате, который мы хотим доказать, а только лишь в самом доказа- доказательстве. Правильный подход основывается на рассуждениях, использованных при доказательстве теоремы Корселта в главе 7. Напомним, что п = pq, где р и q — различные простые чи- числа. Определим вычеты числа bed по модулям р и q. Поскольку
§ 12.3. Почему она работает? 291 вычисления для обоих простых чисел аналогичны, мы прора- проработаем в деталях только случай р. Итак, мы уже убедились в том, что ed = 1 + k<p(n) = 1 + к(р - для некоторого целого к > 0. Следовательно, bed = b{bP-l)k(*-V (mod n). Мы хотели бы теперь применить теорему Ферма, но имеем право сделать это, только если р не делит Ь. Пусть это требо- требование выполнено. Тогда У = 1 (mod p), и мы получаем, что bed = Ъ (mod p). Заменив теорему Ферма теоремой Эйлера, мы не решили возникшей проблемы: сравнение справедливо только для неко- некоторых, но не для всех блоков. Однако теперь блоки, для кото- которых рассуждения не проходят, должны делиться на р. Далее, если р делит Ь, то как 6, так и bed сравнимы с 0 по модулю р, а значит сравнимы между собой. Таким образом, доказыва- доказываемое сравнение справедливо и в этом случае. Следовательно, сравнение bed = Ь (mod p) истинно для любого целого числа Ь. Обратите внимание на то, что мы не. могли использовать по- подобное рассуждение, когда применяли теорему Эйлера к п. Действительно, неравенство НОД(п, Ь) Ф 1 не означает срав- сравнения 6 = 0 (mod n), потому что число п составное. Итак, мы доказали, что bed = b (mod p). Аналогично дока- доказывается сравнение bed = Ь (mod q). Другими словами, bed — Ь делится и на р, и на q. Но р и q — различные простые чи- числа, так что НОД(р, q) = 1. Таким образом, лемма из §3.6 гарантирует нам, что pq делит bed — Ь. А так как п = pq, мы имеем bed = Ь (mod n) для любого целого числа Ь. Други- Другими словами, D(EF)) = Ь (mod n). Как мы отметили в начале параграфа, этого достаточно для доказательства равенства D(EF)) = b, поскольку обе его части — неотрицательные це- целые числа, меньшие п. Подводя итог, можно утверждать, что
292 Система шифрования RSA алгоритм предыдущего параграфа приводит к практической криптосистеме. Теперь нужно убедиться в ее надежности. § 12.4. Почему система надежна? Напомним, что RSA — система шифрования с открытым ключом, состоящим из произведения п = pq различных про- простых чисел р и q, и натурального числа е, обратимого по мо- модулю <р(п). Посмотрим внимательно, что можно сделать для взлома RSA, если все, что известно, это пара (п, е). Чтобы раскодировать блок, зашифрованный с помощью RSA, мы должны узнать число d > О, обратное к е по модулю <р(п). Проблема в том, что практически единственный извест- известный способ сделать это основывается на применении расши- расширенного алгоритма Евклида к е и <р(п). Однако для вычисления <р(п) по формуле из § 9.4 нам нужно знать р и q, что подтвер- подтверждает первоначальное утверждение: взлом RSA требует раз- разложения п на множители. А поскольку трудности разложения носят принципиальный характер, система RSA безопасна. Можно, конечно, предположить, что когда-нибудь кто-ни- кто-нибудь откроет алгоритм, вычисляющий d без информации о множителях числа п. Что, например, произойдет, если некто придумает эффективный способ определения ip(n) непосред- непосредственно по п и е? На самом деле, это всего лишь замаскиро- замаскированный способ разложения п. Точнее говоря, если n = pq и ip(n) = (р - известны, то мы с легкостью вычисляем р и q. Действительно, ip(n) = (р - l){q -l)=pg-(p + g) + l = n-(p + g) + l, так что сумма искомых простых делителей p+q = п — <р(п) +1 известна. Далее, (р + qJ - 4п = (р2 + q2 + 2pq) -4pq = (p- qJ,
§ 12.5. Выбор простых 293 поэтому разность р — q = у/(р + qJ — 4n тоже известна. Те- Теперь, решая простую систему линейных уравнений, легко на- находим рид, разложение п на множители. Значит, алгоритм, вычисляющий <р(п), фактически раскла- раскладывает число п на множители, так что это одного поля ягодки. Но успокаиваться пока рано. Можно пойти дальше в своих фан- фантазиях и предположить, что кто-то изобрел алгоритм, опре- определяющий d непосредственно по п и е. Но ed = 1 (mod <p(n)). Так что, если нам известны n, end, то мы знаем число, крат- кратное <р{п). Оказывается, такой информации тоже достаточно для разложения п. Вероятностный алгоритм, приводящий к такому разложению, можно найти в [29]. В упражнении 7 при- приведен похожий (но более простой) алгоритм разложения п в предположении, что криптосистему Рабина можно взломать. Он даст вам представление о вероятностном алгоритме из [29]. Остается последняя возможность для взлома: попытка вос- восстановления блока Ь непосредственно по вычету Ье по моду- модулю п. Если п достаточно большое, то систематический пере- перебор всех возможных кандидатов для поиска Ь — единствен- единственный выход. Никто еще не придумал ничего лучшего. Мы пе- перечислили основные аргументы, объясняющие, почему взлом RSA-криптосистемы считается равносильным разложению п на простые множители, хотя строгого доказательства этого утверждения пока еще нет. § 12.5. Выбор простых Из предыдущего обсуждения вытекает, что для безопасно- безопасности RSA-криптосистемы важно правильно выбрать простые числа р и q. Естественно, если они малы, то система легко взламывается. Однако недостаточно выбрать большие р и q. Действительно, даже если р и q огромны, но разность |р — q\ мала, их произведение п = pq легко разлагается на множители с помощью алгоритма Ферма (см. §3.4).
294 Система шифрования RSA Это не праздный разговор. В 1995 году два студента од- одного американского университета взломали версию RSA, на- находящуюся в общественном пользовании. Такое стало возмож- возможным из-за плохого выбора простых множителей системы. С другой стороны, RSA использовалась в течение долгого времени и, если простые сомножители выбраны тщательно, то система в действительности оказывается достаточно надеж- надежной. Таким образом, любому программисту системы шифро- шифрования RSA необходим эффективный метод удачного выбора простых чисел. Предположим, мы хотим создать RSA-криптосистему с от- открытым ключом (п, е), в котором целое число п имеет около г знаков. Сначала выберем простое число р, количество знаков которого лежит между 4г/10 и 45г/100, a q возьмем близким к 10г/р. В настоящее время рекомендованный для персонально- персонального использования размер ключа равен 768 битам, т.е. п должно приблизительно состоять из 231 цифры. Чтобы построить та- такое число, нам потребуются два простых, скажем, из 104 и 127 знаков. Обратите внимание на то, что выбранные таким образом простые достаточно далеки друг от друга, т.е. при- применение алгоритма Ферма для разложения п в этой ситуации непрактично. Кроме того, нам нужно удостовериться в том, что в разложении чисел р-1,д-1,р + 1ид + 1на про- простые множители участвуют не только малые делители, но и большие. Действительно, в противном случае, число п стано- становится легкой добычей для некоторых известных алгоритмов разложения (см. [43]). Рассмотрим теперь метод, с помощью которого находят простые числа, удовлетворяющие перечи- перечисленным условиям. Сначала нам потребуется один простой результат о рас- распределении простых чисел. Напомним, что тс(х) обозначает количество простых, не превосходящих х. Учитывая теорему о простых числах, мы видим, что для больших х число ж(х) приблизительно равно j^, где In — натуральный логарифм
§ 12.5. Выбор простых 295 по основанию е (см. §4.5). Пусть х — очень большое, а е — какое-то положительное число. Мы хотим оценить количество простых чисел, лежащих между х и х + е, т.е. прикинуть раз- разность тг(ж + е) — 7г(ж). Благодаря теореме о простых числах и свойствам логарифма, разность тг(х+е) — п(х) приблизительно равна х + е х + Щ1+х~1е) Igx' Предполагая, что х~хе очень мало, мы можем считать значе- значение 1пA + х~1е) равным 0 и получить разумную оценку разно- разности ж(х + е) — ж(х). Итак, число простых, заключенных между х и х + е приблизительно равно е/\пх. Естественно, оценка тем точнее, чем больше х и меньше е. Для более подробного знакомства с такой оценкой см. [23] ([Д.10]). Предположим, что нам нужно выбрать простое число в окрестности целого х. Для определенности будем считать, что х имеет порядок 10127, а простое ищем в интервале от х до ж+104. Было бы полезно знать заранее, сколько простых чисел находится в этом интервале. Для оценки количества простых можно воспользоваться только что полученным результатом. В нашем примере величина х~1е имеет очень маленький по- порядок: 10~123. Поэтому по формуле, выписанной выше, мы за- заключаем, что в интервале между х и х + 104 лежит приблизи- приблизительно [104/1п(Ю127)] =34 простых числа. В конце второго параграфа главы 11 мы сфор- сформулировали стратегию, предназначенную для доказательства простоты данного нечетного числа п. Она состоит из трех шагов: A) проверяем, делится ли п на какое-нибудь простое число, не превосходящее 5000; B) если п не делится ни на одно из них, то применяем к нему тест Миллера, используя в качестве оснований первые 20 простых чисел;
296 Система шифрования RSA C) если тест Миллера по всем этим основаниям дает не- неопределенный ответ, то подвергаем п тесту на простоту из §11.2. Адаптируем приведенную стратегию для поиска простых чисел из интервала [х, х+104]. Сначала мы выбросим все числа интервала, делящиеся на простые, не превосходящие 5 ■ 103. Затем будем применять второй и третий шаги стратегии к оставшимся числам до тех пор, пока не обнаружим простого числа. Чтобы представить себе усилия, требующиеся для реали- реализации нашей стратегии, попробуем оценить количество целых чисел, оставшихся в интересующем нас интервале после перво- первого шага, т.е. после отсеивания чисел, делящихся на небольшие простые числа. Пусть m — положительное целое число. Если х < km < х + 104, то [—1 < к < \х + 1° | . LmJ [ т J Таким образом, в интервале [х, х + 104] существует \х +104' m чисел, кратных т. Найденное число, приблизительно равное [104/тп], совпадает с количеством положительных чисел, крат- кратных m и не превосходящих 104. Это позволяет нам заключить, что в интервалах [х, ж+104] и [0,104] находится почти одинако- одинаковое количество чисел, делящихся на какое-нибудь простое чи- число, не превышающее 5000. Последнее из них вычисляется без особого труда. Прежде всего заметим, что составное число, лежащее между 0 и 104, должно быть кратно простому, мень- меньшему, чем -\/Ю4 = 100. Таким образом, целое число в интервале [х, х + 104] кратно какому-то простому числу, меньшему чем 5000, если оно либо совпадает с этим простым числом, либо
§ 12.6. Проблема подписи 297 является составным. Учитывая, что 2 — единственное четное простое число, мы получаем, что количество нечетных состав- составных чисел, не превосходящих 104, равно 5000 — тгA04) +1. Сле- Следовательно, все количество нечетных составных чисел, остав- оставшихся в интервале [х, х + 104] после завершения первого шага нашей стратегии, приблизительно равно 5000 - E000 - (тгA04) - 1)) - (тгE • 103) - 1) = 560. Отметим, что значения 7гA04) и тгE • 103) легко вычисляются с помощью решета Эратосфена. Итак, в данном интервале можно надеяться отыскать около 34 простых чисел среди всего 560 целых, оставшихся после отсеивания заведомо составных. § 12.6. Проблема подписи Если некоторая компания осуществляет сделку с банком с помощью компьютера, то как компания, так и банк будут на- настаивать на шифровании информации перед ее отправлением по электронной почте или средствами интернета. Однако для безопасности сделок этого недостаточно. Банк должен иметь возможность удостовериться, что сообщение пришло от закон- законного представителя компании. Проблема состоит в том, что ключ шифрования банка является открытым, так что любой может послать банку зашифрованное сообщение с требовани- требованием перевести фонды всей компании на частный счет. Как убе- убедиться в подлинности распоряжения? Другими словами, как можно подписать электронное сообщение? Метод, которым подписывают электронное сообщение, весь- весьма прост и работает для любого открытого ключа криптоси- криптосистемы. Пусть компания использует Ес и Dc в качестве функ- функций кодирования и раскодирования, а Б(, и D( — соответству- соответствующие функции банка. Рассмотрим блок а сообщения, кото- которое компания собирается послать банку. Мы видели, что для
298 Система шифрования RSA уверенности в том, что сообщение не может прочесть посто- посторонний, компания должна послать банку закодированный блок Ес(а). А в качестве подписи компании следует отправить бан- банку блок Eb(Dc(a)). Другими словами, сначала посылается со- сообщение, зашифрованное секретным ключом компании, а по- потом тот же блок, но зашифрованный на этот раз открытым ключом банка. Получив блок Eb(Dc(a)), банк применяет функцию раско- раскодирования для прочтения блока Dc(a), после чего кодирует его функцией компании и получает блок а исходного сообщения. Заметим, что функция Ес открыта и потому известна банку. Почему такой подписи достаточно для уверенности в том, что сообщение пришло именно из компании, а не откуда-нибудь извне? Банк должен подвергнуть полученное сообщение после- последовательности преобразований ECD6. Если получится осмысленный текст, то блок исходного сооб- сообщения был зашифрован последовательностью E6DC. Однако, Dc — декодирующая функция, принадлежащая ком- компании, и поэтому секретна. Доступ к ней имеют только те слу- служащие компании, которым разрешено ведение дел от ее име- имени. Разумеется, если сообщение, раскодированное функциями ECDC, осмысленно, то вероятность его кодировки с помощью функции, отличной от E(,DC, весьма незначительна. У вышеупомянутого метода имеется один маленький недо- недостаток. Пусть (пс, ес) — открытый ключ компании, а (щ, еъ) — ключ банка. Мы помним, что закодированный блок начального сообщения должен удовлетворять неравенству 0 ^ Dc(a) < пс. Предположим, теперь, что nj, < nc. В этом случае у нас нет никакого способа узнать заранее, будет ли Dc(a) меньшим,
Упражнения 299 чем щ. Если больше, то перед применением функции D& не- необходимо будет разбить Dc(a) на блоки, меньшие, чем щ. Не сделав этого, невозможно правильно расшифровать сообще- сообщение. Такая процедура называется переблокировкой. Простой способ избежать этой проблемы заключается в следующем. Так как числа щ и пс не скрываются, можно ре- решить заранее, какое из них будет меньше. Бели пс < щ, то мы подписываем сообщение, шифруя блоки с использованием E(,DC. В противном случае, следует подписывать сообщение при помощи функции DCE(,. Таким образом, функция, соот- соответствующая наименьшему значению п, всегда стоит в начале, и необходимость в переблокировке отпадает. Упражнения 1. Разложите число п = 3552377 на простые множители, если известно, что оно равно произведению двух разных про- простых чисел и tp(n) = 3 548 580. 2. Открытый ключ, используемый банком в Тулузе для ко- кодирования сообщений по системе RSA состоит из п = 10 403 и е = 8 743. Недавно компьютеры банка получили из неопознан- неопознанного источника следующее сообщение: 9293 - 4366 - 7922 - 7871 - 3240 - 1677 - 4026 - 10311. О чем оно говорит? 3. Сообщение 6868 - 5736 - 7438 зашифровано по RSA-криптосистеме с открытым ключом п = = 7597 и е = 4947. Кроме того, известно что </>(п) = 7420. Расшифруйте сообщение.
300 Система шифрования RSA 4. Пусть р и q — нечетные простые числа. Предположим, что мы применяем RSA-криптосистему с открытым ключом (п, е), где п = pq. Вообще говоря, не исключена вероятность, что после кодирования блок Ь может не измениться, т.е. ЕF) = Ь. Такой блок называют неподвижным относительно RSA-систе- мы с ключом (п, е). Определите число неподвижных блоков относительно RSA-системы в случае р = 3,д>3ие = 3. Указание: Бели Ь — неподвижный блок относительно RSA- системы с открытым ключом (п,е), то Ье = Ь (mod n). Сле- Следовательно, Ье = Ь (mod р) и Ье = Ъ (mod q). Решите каждое из этих сравнений при р = 3, д>0ие = Зи примените китайскую теорему об остатках. 5. Другая широко известная криптосистема с открытым ключом — это Эль-Гамаль. Для ее построения нужно выбрать большое простое число р и примитивный корень g по модулю р. Эти данные являются общими для всех пользователей аппа- аппарата криптосистемы. Далее каждый пользователь выбирает целое число а из промежутка [0, р — 2] и сохраняет его в тайне, потому что оно является дешифрующим ключом пользовате- пользователя. Открытым ключом пользователя становится степень да. Блок Ъ сообщения, предназначенного для шифрования, дол- должен удовлетворять неравенству 1 < 6 < р — 1, а чтобы его закодировать, случайным образом выбирают целое число к и выписывают пару {дк,Ьдак). A) Почему эта пара легко расшифровывается при из- известных аи д? B) Что требуется для взлома этой системы? Ответ на второй вопрос задачи известен как проблема дис- дискретных логарифмов. Считается, что она так же сложна для решения, как и разложение большого числа на множители. 6. Криптосистема, изобретенная в 1979 году Майклом Ра- бином, очень похожа на RSA-криптосистему. Сначала выбира- выбираются различные нечетные простые числа р и q и вычисляется
Упражнения 301 их произведение п = pq. Блок, предназначенный для кодирова- кодирования, должен удовлетворять неравенству 0 < b < п. Шифруется он возведением в квадрат по модулю п F •->■ b2 (mod n)). Поэто- Поэтому при дешифровке полученного блока а приходится решать уравнение: х2 = a (mod n). Введем обозначение и = (pq~l — <?р~1). A) Покажите, что и2 = 1 (mod q) и и2 = 1 (mod р). B) Покажите, что и2 = 1 (mod n). C) Пусть жо — решение уравнения х2 = a (mod n). По- Покажите, что — xq, uxq и —uxq тоже решения такого уравнения. Таким образом, каждый блок криптограммы может быть рас- расшифрован четырьмя способами, что, конечно, очень неудобно. 7. Пусть п = pq, где р и q — различные простые числа. В § 12.4 мы видели, что взлом RSA равносилен разложению п на множители. Сейчас мы покажем, что если кто-то найдет алгоритм, взламывающий криптосистему Рабина, то у нас по- появится вероятностный процесс разложения п на множители. Иначе говоря, мы хотим показать, что если бы была машина, которая по целому числу а выдавала бы решение сравнения х2 = a (mod n), то мы легко смогли бы найти р та. q. Вы- Выберем случайным образом натуральное число b и вычислим б2 по модулю п. Затем, используя машину, найдем решение сравнения х2 = b2 (mod n). Так как у него четыре решения, с вероятностью 1/2 машина найдет решение х, для которо- которого х ф ±b (modn). Покажите, что в этом случае НОД(ж, Ь) должен быть равен одному из простых сомножителей числа п. Таким образом, если у нас есть такая машина, то мы вправе ожидать, что сможем разложить п на множители уже после второго случайного выбора значения Ь. 8. Пусть простые числа р и q дают в остатке 3 при деле- делении на 4. Положим п = pq. Обозначим через а блок сообщения, зашифрованного по криптосистеме Рабина с открытым клю-
302 Система шифрования RSA чом п. Напишите программу, которая до известным а и п рас- расшифровывает а по методу упражнения 6. Программа должна уметь A) раскладывать п на множители, т.е. находить р и q; B) решать уравнение х2 = a (mod п). Оба этапа программы уже рассматривались в более ранних упражнениях, а именно, упр. 12 главы 3, упр. 19 главы 6 и упр. 10 главы 8. Используйте Вашу программу при раскоди- раскодировании сообщения, приведенного ниже. Оно зашифровано по системе Рабина с открытым ключом п = 20490901. 9293 - 4366 - 7922 - 7871 - 3240 - 1677 - 4026 - 10311. Вы получите 45 = 1024 возможных расшифровок, но только одна из них имеет смысл.
Кода В своих «Принципах Человеческого Знания», изданных в 1710 году, Джордж Беркли (George Berkeley) говорит следую- следующее о теории чисел и ее применении: «Мнение о чистой и интеллектуальной природе аб- абстрактных чисел поставило их в ряд с теми фило- философскими категориями, которые, казалось бы, воз- воздействуют на необычайно тонкие и возвышенные струны души. Такой взгляд повышает ценность да- даже пустяковых численных теорий, которые беспо- бесполезны с практической точки зрения, а служат лишь для развлечения...». Через несколько строк он добавляет: «Вы, возможно, разделяете мнение об этих высоких материях и абстракциях, и смотрите на все вопро- вопросы, связанные с числами, как на «difficiles nugae», поскольку они не содействуют решению практиче- практических задач и не способствуют улучшению жизни.» Между прочим, латинское выражение «difficiles nugae» перево- переводится как «трудные мелочи». Беркли считал, что теория чисел — самый бесполезный из всех разделов математики, доживших до XX столетия. Так и Харди, заметив, что наука может служить как во зло, так и во благо, говорит:
304 Кода «Как Гаусс, так и менее выдающиеся математики могут быть оправданы тем, что есть по крайней мере одна область науки, которой они занимают- занимаются, чья отдаленность от обычной человеческой дея- деятельности сохраняет их в чистоте и спокойствии.» Цитата взята из знаменитой книги Харди «Апология матема- математика» ([22]). Но нельзя забывать, что книга написана во време- времена Второй Мировой Войны человеком, всегда остававшимся последовательным пацифистом. Можно только предполагать реакцию Харди на приложения теории чисел, описанные в на- настоящей книге. Несомненно только одно: современная крипто- криптография перевернула наше представление о практической поль- пользе теории чисел. Заканчивая книгу, лучше всего указать на темы теории чи- чисел и криптографии, которые не были здесь затронуты1. Они послужат руководством к дальнейшему изучению предмета. В нашей книге отсутствует серьезное обсуждение крипто- криптоанализа RSA-системы. Другими словами, мы не рассматри- рассматривали всех возможных путей ее взлома. Большинство исследо- исследований в этой области связано с разложением на множители открытого ключа. Более того, в последние годы было приду- придумано несколько интригующих алгоритмов разложения, среди них: алгоритм эллиптической кривой; квадратичное решето и решето числового поля. Эллиптической кривой называется неособая плоская куби- кубическая кривая, т.е. кривая, которая описывается полиномиаль- полиномиальным уравнением третьей степени от двух переменных и имеет касательную в каждой своей точке. Например, точки с коор- координатами (х,у), удовлетворяющими уравнению у2 = х3 + 17, образуют эллиптическую кривую. По фундаментальной тео- теореме алгебры, большинство прямых, проведенных через па- пару точек эллиптической кривой, обязательно пересекут ее и в 'На русском языке множество тем по криптографии обсуждается в [Д.2]. — Прим. перев.
Кода 305 третьей. Опираясь на этот факт, можно определить операцию сложения на множестве точек кривой. Более того, эта опера- операция наделяет эллиптическую кривую структурой группы. С этого момента будем предполагать, что рассматривае- рассматриваемые эллиптические кривые определяются полиномиальными уравнениями с целыми коэффициентами. Рациональной точ- точкой такой кривой называется точка плоскости с рациональ- рациональными координатами, через которую проходит наша кривая. Таким образом, (—1,4) — рациональная точка кривой, зада- задаваемой уравнением у2 = х3 + 17. Можно доказать, что все рациональные точки данной эллиптической кривой образуют подгруппу во всей группе точек кривой. Иными словами, при сложении двух рациональных точек кривой мы снова получаем рациональную точку. Проблема определения рациональных точек эллиптической кривой тесно связана с решением диофантовых уравнений, уже обсуждавшихся нами. Она изучалась многими известными ма- математиками, оставаясь на переднем крае развития теории чи- чисел. Эллиптические кривые были центральным местом доказа- доказательства великой теоремы Ферма, которое анонсировал А. Уайлс. Фактически, Уайлс доказал одну знаменитую ги- гипотезу об эллиптических кривых и затем показал, как исполь- использовать ее при доказательстве теоремы Ферма (см. [20], [Д.12]). В работе, опубликованной в 1987 году, Ленстра (Lenstra) показал, что групповые свойства эллиптической кривой могут быть использованы для разложения больших чисел на множи- множители. Алгоритм Ленстры наиболее эффективно применяется к целым числам, которые трудно разлагаются делением мето- методом проб, но имеют не более 30 знаков. К счастью, сейчас до- доступно мастерски написанное элементарное введение в теорию эллиптических кривых, которое включает в себя подробное обсуждение алгоритма Ленстры. Это — «Рациональные точки эллиптических кривых» A992) Сильвермана (Silverman) и Тэй- та (Tate). Алгоритм Ленстры первоначально появился в [34] и детально объясняется в [8] и [11] ([Д.7]).
306 Кода Второй алгоритм разложения на множители, о котором мы упоминали (квадратичное решето) лучше, чем алгоритм Лен- стры, приспособлен для разложения больших чисел. Именно метод квадратичного решета был использован для разложе- разложения открытого ключа RSA-129, упомянутого в § 1.2. Преиму- Преимущество этого алгоритма заключается в той легкости, с ко- которой он позволяет распределить задачу о разложении между несколькими компьютерами. Таким образом, добровольцы мо- могут тратить свободное время своих персональных компьюте- компьютеров для участия в титанических усилиях по разложению. Ко- Конечно, это было бы невозможно без появления интернета, по крайней мере в масштабе, который потребовался для RSA-129. В основе квадратичного решета лежит усиление алгоритма Ферма, предложенное М. Крайчиком (М. Kraitchik) в 1920-ых годах. Оно использует идеи и методы самой известной сре- среди любителей теории чисел теоремы, так называемого закона квадратичной взаимности, доказанного Гауссом в 1796 году. Многие математики предлагали различные усовершенствова- усовершенствования метода Крайчика, что дало возможность С. Померанцу в 1981 году сформулировать принцип квадратичного решета. Слово «решето» употреблено здесь по существу. Действитель- Действительно, ключевая идея Померанца, ускоряющая метод, основана на использовании решета, очень похожего на решето Эратосфе- на. Элементарное изложение квадратичного решета можно най- найти в [8]. Оно включает все необходимые предварительные све- сведения, в том числе и доказательство закона квадратной вза- взаимности. История решета, рассказанная самим Померанцом, напечатана в [37]. Решето числового поля подводит нас к области квадратич- квадратичных числовых полей, уже не такой элементарной теме, как упо- упоминаемые нами до сих пор. Идея метода была распространена в письме Полларда (J.Pollard) в 1988 году. Первым большим достижением этого алгоритма было разложение на множители
Кода 307 155-значного девятого числа Ферма в 1990 году (см. [33]). Ста- Статья содержит описание решета числового поля, которое также приведено в [37]. Разложение ключа к RSA-130 в апреле 1996 года стало следующим триумфом алгоритма. О квадратичных числовых полях можно прочесть в [25]. Перед тем, как мы перейдем к темам, лежащим вне RSA, проясним, что на практике при взломе системы шифрования можно обойтись и без раскладывания числа на множители. Это обосновал в 1995 году П. Кохер (P. Kocher), независимый консультант системы безопасности, который как раз к этому моменту получил диплом биолога. Он показал, что некоторые версии RSA можно взломать, анализируя информацию о коли- количестве времени, затрачиваемого на получение и расшифровку сообщений (см. [31]). Это показывает, что безопасность RSA, да и других криптосистем, зависит не только от развития все более эффективных алгоритмов и мощных компьютеров. Как мы видели в главе 12, RSA не единственная трудная для взлома криптосистема, предлагаемая теорией чисел. Мы упоминали также Эль-Гамаль. Другая система того же сорта была изобретена Н. Коблитцом (N. Koblitz) в 1987 году. Вме- Вместо возведения в степень, используемого как в RSA, так и в Эль-Гамаль, в ней вычисляется кратность точки эллиптиче- эллиптической кривой (см. [30]). Наконец, теория чисел все еще популярна, благодаря краси- красивым, но, главным образом, бесполезным результатам, так рез- резко осужденным Джорджем Беркли. Наиболее ценимая элемен- элементарная книга по теории чисел — это, конечно, классический учебник Харди и Райта «Введение в теорию чисел». В ней вы найдете доказательство закона Гаусса о квадратной взаимно- взаимности, изучение разбиений целых чисел, доказательство великой теоремы Ферма для п = 3, обширную информацию о квадра- квадратичных полях и массу элементарных фактов о распределении простых чисел.
308 Кода Многие знакомились с теорией чисел по этой книге. Ма- Математический физик Фриман Дайсон (Freeman Dyson), полу- получивший книгу в качестве приза в возрасте 14 лет, был одним из них. Вот что он сказал об этом произведении в 1994 году в своем интервью (см. [3]). «Это — изумительная книга. Это — самая прекрас- прекрасная книга по теории чисел, которую я знаю. Это — не учебник, но чрезвычайно удобочитаемое объяс- объяснение предмета, стиль которого делает его, вероят- вероятно, лучшим введением в математику, которое когда- либо было написано.» Более современное введение в теорию чисел — Айрланд (Ire- (Ireland) и Розен (Rosen) «Классическое введение в современную теорию чисел». Книга содержит последние достижения тео- теории, но Вам потребуются хорошие знания основ современной алгебры (групп, полей и колец) для чтения даже самых эле- элементарных ее глав. Наконец, для тех, кого больше интересует история, имеет- имеется книга А. Вейля «Теория чисел: исторический подход». Напи- Написанная мастером теории чисел, также известным своими ра- работами по истории математики, книга повествует о вкладах в науку, оставленных Ферма, Эйлером, Лагранжем и Лежан- дром. Это очаровательная книга и Вы, вероятно, будете часто возвращаться к ней ради предоставляемого ею чистого насла- наслаждения.
Приложение. Корни и степени В настоящем приложении мы описываем два алгоритма, не- необходимые для реализации методов разложения на множители и тестов на простоту, представленных в этой книге. Алго- Алгоритм первого параграфа вычисляет целую часть квадратного корня данного положительного целого числа, в то время как алгоритм § П.2 предназначен для вычисления степеней в ариф- арифметике остатков. § П.1. Квадратные корни Оба алгоритма разложения на множители из третьей главы используют вычисление квадратных корней. В настоящем па- параграфе мы описываем процедуру, вычисляющую целую часть квадратных корней натуральных чисел. Это в точности то, что требуется для алгоритма деления методом проб из § 3.2. Кроме того, алгоритму Ферма нужна процедура выяснения, является ли данное натуральное число полным квадратом. Но п — полный квадрат, только если п — [у/п ] = 0. Так что алго- алгоритм этого параграфа может быть использован и при решении последнего вопроса.
310 Приложение. Метод состоит в вычислении такой убывающей последова- последовательности натуральных чисел что в момент ее стабилизации (хк = Zjt+i для некоторого к ^ 0) мы получаем искомую целую часть: Хк = [у/п]. По- Последовательность определяется рекуррентной формулой: п + 1] \xf j и [ при г ^ 0. Идея заключается в том, что начиная с (п + 1)/2, последовательность будет уменьшаться вплоть до [у/п]. Рас- Рассмотрим следующие утверждения: B) если Хк > [у/п], то хк > xk+i; C) если хк = хк+и то хк = [у/п]. Таким образом, каждое из Хк — натуральное число, не пре- превосходящее (п + 1)/2. Следовательно, эта последовательность может иметь лишь конечное число членов. В частности, най- найдется некоторый номер г, для которого хт = xr+i. В этом случае из утверждения C) получим: хг = [у/п]. Итак, нам осталось доказать три выписанных утвержде- утверждения. Заметим, что если у ^ х — вещественные числа, то [у] ^ М- Таким образом, утверждение A) будет следовать из неравенства: (п + 1)/2 > у/п. Но последнее неравенство мгно- мгновенно получается из следующих выкладок: Ц1£яа + 2п + 1 2=n2 (n_1J=n2_2n Для доказательства B) заметим, что, по определению по- последовательности, ijt+i = [{x\+ri)l2xk\. Поскольку Хк — целое число, то неравенство Хк > [у/п] влечет Хк > у/п. Возводя в
§ П.1. Квадратные корни 311 квадрат обе части последнего неравенства, получаем х\ > п. Поэтому 2х\ > х\ + п, откуда Чтобы доказать третье утверждение, предположим, что = [(ж2. + n)/2ijt], что эквивалентно неравенствам Отсюда О < п - х\ < 2хк. Значит, п ^ х\ и одновременно п < ж^ + 2ж*. Но из последнего неравенства следует, что п < (хк + IJ. Поэтому 4 < п < {хк + IJ, что равносильно равенству хк = Описанный метод вычисления целой части квадратного кор- корня легко представить в виде алгоритма. Алгоритм квадратных корней Ввод: целое число п > 2. Вывод: целая часть квадратного корня из п. Шаг 1. Начинаем с присвоений: X — пи Y = [(п + 1)/2] и переходим к шагу 2. Шаг 2. Бели X = Y, то останавливаемся и выписываем X; в противном случае переходим к шагу 3. Шаг 3. Заменяем значение X на текущее значение У, а пере- переменной Y присваиваем значение [(X2 + п)/2Х] и возвращаемся к шагу 2.
312 Приложение. § П.2. Алгоритм степеней Предположим, что нам даны три натуральных числа а, е и п. Здесь мы описываем алгоритм определения вычета степе- степени ае по модулю п. Для более эффективной работы алгоритма полезно представить показатель е в двоичной системе счисле- счисления: где коэффициенты &о, Ь\,..., Ьп могут принимать значения О или 1. Таким образом, ае = (a2)bn2»-i+-+b22+6i . аЬо Заметим, что аь° может быть равно 1 (если Ьо = 0) или а (если &о = 1). Обозначив аЬо через Pi, получаем ае = Теперь положим Рг = (a?)blPi. Тогда ае = (а8)бп2»-з+ () Продолжая начатую процедуру, мы определяем последователь- последовательность целых чисел Рь Рг,..., Рп, где Рп = ае. Конечно, по- поскольку мы делаем вычисления с элементами из Zn, нам над- надлежит находить вычет всех произведений по модулю п на ка- каждом шаге алгоритма. Обратите внимание на то, что на каждом этапе мы ли- либо возводим в квадрат число, либо вычисляем произведение a21 Pi для i = 1,2,...,п. Более того, если на каком-то шаге нам попалось нулевое значение &{, нам совершенно не нужно вычислять a21 Pi. На практике представление показателя е в двоичной си- системе счисления происходит одновременно с вычислением сте- степени. Так, например, если е нечетно, то &о = 1, в противном
§ П.2. Алгоритм степеней 313 случае, &о = 0. Аналогично, основываясь на четности или не- нечетности числа можно определить значение Ь\. Заметьте, что выписанная сум- сумма равна одному из следующих отношении: е/2, если е — чет- четно, и (е — 1)/2, если оно нечетно. Формализованный алгоритм выглядит следующим образом: Алгоритм степеней Ввод: целые числа а, е и п, где а, п > 0 и е > 0. Вывод: вычет степени ае по модулю п. Шаг 1. Начинаем с присвоений: А = а, Р = 1 и Е = е. Шаг 2. Если Е = 0, то выводим сообщение: «ае = Р (mod n)»; в противном случае переходим к шагу 3. Шаг 3. Если Е нечетно, то присваиваем переменной Р вычет произведения А • Р по модулю п, а Е — значение (Е — 1)/2, после чего переходим к шагу 5; в противном случае идем к шагу 4. Шаг 4. Если Е четно, то присваиваем Е значение Е/2 и идем к шагу 5. Шаг 5. Заменяем текущее значение переменной А на вычет А2 по модулю п и переходим к шагу 2.
Литература [1] Adleman, L., Rivest, R. L., and Shamir, A. 1978 A method for obtaining digital signatures and public-key cryptosys- tems. Comm. ACM 21, 120-126. [2] Akritas, A. G. 1989 Elements of computer algebra with ap- applications. John Wiley & Sons, New York. [3] Albers, D. J. 1994 Freeman Dyson: Mathematician, physi- physicist, and writer. The College Mathematics J. 25, 3-21. [4] Alford, W. R., Granville, A., and Pomerance, C. 1994 There are infinitely many Carmichael numbers. Ann. of Math. 140, 703-722. [5] Arnault, F. 1995 Constructing Carmichael numbers which are strong pseudoprimes to several bases. J. Symbolic Com- Computation 20, 151-161. [6] Artin, M. 1991 Algebra. Prentice-Hall, Englewood Cliffs. [7] Bateman, P. T, and Diamon, H. G. 1996 A hundred years of prime numbers. The Amer. Math. Monthly 103, 729-741. [8] Bressoud, D. M. 1989 Factorization and primality testing. Undergraduate Texts in Mathematics. Springer- Verlag, New York.
Литература 315 [9] Bruce, J. W. 1993 A really trivial proof of the Lucas-Lehmer test. The Amer. Math. Monthly 100, 370- 371. [10] Carmichael, R. D. 1912 On composite numbers P which sat- satisfy the Fermat congruence ар~г = 1 (mod P). The Amer. Math. Monthly 19, 22-27. [11] Cassels, J. W. S. 1991 Lectures on elliptic curves. London Math. Soc. Student Texts 24. Cambridge University Press, Cambridge. [12] Davies, W. V. 1987 Egyptian hierogliphs. British Museum Publications, London. [13] Davis, M. 1980 What is computation? In Mathematics To- Today, edited by L. A. Steen. Vintage Books, New York, 241- 267. [14] Dickson, L. E. 1952 A history of the theory of numbers. Chelsea Publishing Company, New York. [15] Edwards, H. M. 1977 Format's last theorem. Graduate Texts in Mathematics 50. Springer-Verlag, New York. [16] Edwards, H. M. 1984 Galois theory. Graduate Texts in Mathematics 101. Springer-Verlag, New York. [17] Gauss, C. F. 1986 Disquitiones Arithmetics. Translated by A. A. Clarke. Revised by W. C. Waterhouse with the help of C. Greither and A. W. Grotendorst. Springer-Verlag, New York. [18] Giblin, P. 1993 Primes and programming. Cambridge Uni- University Press, Cambridge, England. [19] Gostin, G. B. 1995 New factors of Fermat numbers. Math, of Сотр. 64, 393-395.
316 Литература [20] Gouvea, F. Q. 1994 A marvellous proof. The Amer. Math. Monthly 101, 203-222. [21] Hardy, G. Я. 1963 A course of pure mathematics. 10th edi- edition. Cambridge University Press, Cambridge, England. [22] Hardy, G. H. 1988 A mathematician's apology. Cambridge University Press, Cambridge. England. [23] Hardy, G. H., and Wright, E. M. 1994 An introduction to the theory of numbers. 5th edition. Oxford Science Publications. Oxford University Press, Oxford, England. [24] Ingham, A. E. 1932 The distribution of primes. Cambridge University Press, Cambridge, England. [25] Ireland, K., and Rosen, M. 1990 A classical introduction to modern number theory. 2nd edition. Graduate Texts in Mathematics 84. Springer-Verlag, New York. [26] Jaeschke, G. 1993 On strong pseudoprimes to several bases. Math, of Сотр. 61, 915-926. [27] Kang Sheng, S. 1988 Historical development of the Chinese remainder theorem. Arch. Hist. Exact Sci. 38, 285-305. [28] Knuth, D. E. 1981 The art of computer programming. Vol. 2, Seminumerical algorithms. 2nd edition. Addison-Wesley Publishing Company, Heading, Massachusetts. [29] Koblitz, N. 1987a A course in number theory and cryptog- cryptography. Graduate Texts in Mathematics 97. Springer-Verlag, New York. [30] Koblitz, N. 1987b Elliptic curve criptosystems. Math, of Сотр. 48, 203-209.
Литература 317 [31] Kocher, P. 1996 Timing attacks on implementations of Dif- fie-Helman, RSA, DSS, and other systems. In Advances in Cryptology-CRYPTO '96, edited by N. Koblitz. Lecture No- Notes in Computer Science 1109. Springer-Verlag, 104-113. [32] Kranakis, E. 1986 Primality and criptography. Wiley-Teub- ner Series in Computer Science. B. G. Teubner and J. Wiley & Sons. [33] Lenstra, A. K., Lenstra, H. W., Jr., Manasse, M. S., and Pollard, J. M. 1993 The factorization of the ninth Fermat number. Math, of Сотр. 61. 319-349. [34] Lenstra, H. W. 1987 Factoring integers with elliptic curves. Math, of Сотр. 126, 649-673. [35] Plato 1982 Plato's Republic. Translated by B. Jowet. Mod- Modern Library, New York. [36] Poincare, H. 1952 Science and hypothesis. Dover, New York. [37] Pomerance, C. 1996 A tale of two sieves. Notices of the Amer. Math. Soc. 43A2), 1473-1485. [38] Pomerance, C, Selfridge, J. L., and Wagstaff, S. S., Jr. 1980 The pseudoprimes to 25 ■ 109. Math, of Сотр. 151, 1003- 1026. [39] Rabin, M. O. 1980 Probabilistic algorithm for testing pri- primality. J. Number Theory 12, 128-138. [40] Ramanujan, S. 1927 Collected papers of Srinivasa Ramanu- jan. Edited by G. H. Hardy, P. V. Seshu Aiyar, and В. М. Wilson. Cambridge University Press, Cambridge, England [41] Ribenboim, P. 1990 The book of prime number records. Sprin- Springer-Verlag, New York.
318 Литература [42] Ribenboim, P. 1994 Catalan's conjecture. Academic Press, Boston. [43] Riesel, H. 1994 Prime numbers and computer methods of factorization. 2nd ed. Progress in Mathematics 126. Birkha- user, Boston. [44] Rigatelli, L. T. 1996 Evariste Galois. Translated by J. Den- ton. Vita Mathematica. Birkhauser, Basel. [45] Rotman, J. J. 1984 An introduction to the theory of groups. 3rd edition. Allyn and Bacon, Newton, Massachusetts. [46] Silverman, J. H., and Tate, J. 1992 Rational points on ellip- elliptic curves. Undergraduate Texts in Mathematics. Springer- Verlag, New York. [47] Thomas, I., trans. 1991 Greek Mathematical Works I: Thales to Euclid. Loeb Classical Library 335. Harvard University Press, Cambridge, Massachusetts, and London, England. [48] van der Waerden, B. L. 1985 A history of algebra. Springer- Verlag, Berlin-Heidelberg. [49] Weil, A. 1987 Number theory: An approach through history. Birkhauser, Boston. [50] Weyl, H. 1982 Symmetry. Princeton University Press, Prin- Princeton.
Дополнительная литература [Д.1] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. [Д.2] Введение в криптографию. Под общ. ред. Ященко В. В. М.: МЦНМО-ЧеРо, 2000. [Д.З] Виноградов И. М. Основы теории чисел. М.: Наука, 1972. [Д.4] Кнут Д. Искусство программирования на ЭВМ. Т. 2. По- Получисленные алгоритмы. М.: Мир, 1972. [Д.5] Кострикин А. И. Введение в алгебру. М.: Наука, 1977. [Д.б] Кудрявцев Л. Д. Курс математического анализа, Т. 2. М.: Высшая школа, 1988. [Д.7] Ленстра X. Эллиптические кривые и теоретике»-числовые алгоритмы.// Международный конгресс математиков в Беркли. М.: Мир, 1991. С. 164-193. [Д.8] Парамонова И. М. Симметрия в математике. М.: МЦНМО, 2000. [Д.9] Постников М. М. Теория Галуа. М., 1967. Д.10] Прахар К. Распределение простых чисел. М.: Мир 1967.
320 Дополнительная литература [Д.11] Пуанкаре А. О науке. М.: Наука, 1990. [Д.12] Сингх С. Великая теорема Ферма. М.: МЦНМО, 2000. [Д. 13] Тихомиров В. М. Великие математики прошлого и их великие теоремы. М.: МЦНМО, 1989. [Д.14] Шафаревич И. Р. Избранные главы алгебры. М.: изд-во ж. «Математическое образование», 2000.
Предметный указатель ассоциативность (associativity), 214 блок (block), 285 — неподвижный (fixed), 300 ввод (input), 40 вывод (output), 40 вычет (residue), 123 декодирование (decryption), 14 делитель (divisor), 47 — наибольший общий (greatest common), 47 дистрибутивность (distributive), 128 китайская теорема об остат- остатках (chinese remainder theorem), 199, 204 класс (class) — приведенный вид (reduced form), 124 ключ (key) — декодирующий (decryption), 18, 287 — кодирующий (encryption), 18, 287 — окрытый (public), 18, 287 — секретный (secret), 18, 287 кратное (multiple), 47 — наименьшее общее (least common), 84 кратность (multiplicity), 63 криптоанализ (cryptoanalysis), 15 метод (method) — Ферма (Fermat), 249 — Эйлера (Euler), 252 множитель (factor), 47 модуль (modulus), 122 образующая (generator), 235 операция (operation), 213 остаток (remainder), 43 отношение (relation), 116
322 Предметный указатель — рефлексивность (reflexive), 117 — симметричность (symmetric), 117 — транзитивность (transitive), 117 — эквивалентности (equivalence), 116 переблокировка (reblocking), 299 повторяющиеся единицы (rep-unit), 84 порядок (order) — группы (of group), 216 — элемента (element), 235 последовательность Фибоначчи (Fibonacci sequence), 51, 59 разбиение (partition), 119 свидетель (witness), 171 теорема (theorem) — Вильсона (Wilson), 281 — Корселта (Korselt), 272 — Эйлера (Euler), 239 — биномиальная (binomial), 156 — обратимости (invertibility), 137, 192 — основная арифметики (fundamental th. of arithmetic), 63 — о примитивных корнях (primitive root th.), 265, 276 — о простых числах (prime number th.), 104 тест Люка (test Lucas), 256 — Пепэна (Pepin), 266 — на простоту (primality t.), 270 тор (torus), 201 тотиент (totient), 228, 249 фактормножество (quotient set), 119 формула (formula) — рекуррентная (recursive f.), 149 функция Эйлера (Euler function), 228 частное неполное (quotient) % 43 частотный анализ (frequency analysis), 15 числа (numbers) — взаимно простые (co-prime), 47 — попарно - (pairwise), 47 — Фибоначчи (Fibonacci), 165 — гексагональные (hexagonal), 165
Предметный указатель 323 число (number) — позиционное представ- представление (positional represen- representation), 23 — разложимое (decomposable), 63 — составное (composite), 63 — сильно - (highly), 86 — совершенное (perfect), 84, 92 эвклидово (euclidean), 85 элемент (element) — единичный (identity), 214 — обратимый (invertible), 136 — обратный (inverse), 136, 214 — противоположный (symmetric), 128 эллиптическая кривая (elliptic curve), 304
Дж. Уолрэнд Телекоммуникационные и компьютерные сети. Вводный курс 2001; 480 стр.; формат 70x100/16, пер. №7 Базовый курс Калифорнийского Университета в Беркли - всемирно известного центра компьютерных технологий. Глава 1. Введение в сети связи 1.1 Что такое сети связи 1.2 Почему Вам следует изучать сети связи 1.3 Что следует зиать о сетях связи 1.4 Эволюция сетей связи Телефонные сети Компьютерные сети 1.5 Структура книги Глава2. Функционирование сетей 2.1 ЛВС Ethernet Разделяемый Ethernet Определение адресов, протоколы ARP и RARP Объединение сетей Ethernet: коммутаторы и маршрутизаторы 2.2 Интернет Пример Маршрутизация: протоколы OSPF и BGP Протокол TCP Приложения «клиент-сервер» 2.3. Асинхронный режим передачи - ATM Основные возможности ATM Маршрутизация Управление качеством обслужива- вания. Процедура «дырявое ведро» 2.4 Архитектура сетей Многоуровневая архитектура Сквозные услуги в сети Технические средства 2.5 Дополнение 1. Что стоит за Инфор- Информационной революцией? Цифровая революция Кодирование источника и каналь- канальное кодирование Коммутация пакетов Глава 3. Интернет 3.1 Исторический обзор 3 2 Архитектура сетей TCP/IP Канальный уровень ЛВС Сетевой уровень Транспортный уровень Приложения 3.3 Имена и адреса Имена. Адреса 3.4 Межсетевой Протокол - IP Цифровые сообщения IP и ICMP Алгоритм OSPF Протокол BGP Plug and Play: Протокол автокон- автоконфигурирования DHCP Мобильный IP 3.S. Сквозная передача Обзор Протокол повторной передачи Протокол TCP Протокол UDP 3.6 Дополнение 1. Протоколы каналь- канального уровня Протокол SLIP Протокол РРР 3.7 Дополнение 2. Анализ алгоритма «кратчайшего пути» Дейкстры Определение Кратчайшие пути 3 8 Дополнение 3 Другие алгоритмы маршрутизации Алгоритм Беллмана-Форда Связующее дерево 3.9 Дополнение 4. Версия 6 протокола IP 3.10 Дополнение S. Маршрутизация при групповой адресации Глава 4. Локальные вычислительные сети 4.1 Архитектура и характеристики Архитектура Характеристики ЛВС 4.2 ЛВС Ethernet и стандарты IEEE 802.3 Топология Физический уровень Управление доступом к среде - MAC Коммутируемая сеть 10BASE-T 100BASE-T Гигабитная сеть Ethernet 4.3 Сети Token Ring Топология Физический уровень Управление доступом к среде - MAC Взаимосвязь сетей Token Ring 4.4 FDDI Топология Физический уровень Управление доступом к среде - MAC Управление станцией 4.5 Беспроводные ЛВС Архитектура Физический уровень Стандарт Hiperlan Стандарт IEEE 802.11 4 6 Подуровень управления логичес ким каналом 4.7 Дополнение 1. Задержки в ЛВС 4.8 Дополнение 2. Анализ протокола множественного метода доступа с контролем несущей и обнаружени- обнаружением конфликтов.
Протокол МДКН/ОК Эффективность МДКН/ОК Анализ Примеры Среднее время доступа к среде Эффективность IEEE 802.3 4.9 Дополнение 3. Анализ протокола MAC Token Ring Протокол MAC Token Ring Эффективность протокола MAC Token Ring Анализ Максимальное время доступа к среде 4.10 Дополнение 4. Анализ протокола MAC сети FDDI Протокол FDDI Максимальное время доступа к среде протокола FDDI Анализ Эффективность протокола FDDI 4.11 Дополнение 5. ALOHA Описание Протоколы ALOHA Эффективность протоколов ALOHA Анализ Резервирование Глава 5. Асинхронный режим передачи-ATM 5.1 Архитектура Уровни протоколов Три примера приложений Концепции построения ATM Принципы работы Формат ячеек ATM Уровень AAL Работа в сети и обслуживание 5.2 Маршрутизация ATM Таблицы маршрутизации Интерфейс сетевого узла Структурные схемы коммутаторов 5.3 Сквозное обслуживание Атрибуты качества обслуживания Дескрипторы трафика Классы обслуживания 5.4 Взаимодействие сетей с помощью ATM IP поверх ATM Эмуляция локальных сетей поверх ATM 5 S Дополнение. Задержка в простом коммутаторе Глава 6. Канальный уровень и протоколы повторной передачи 6.1 Формирование кадров Инкапсуляция Контроль ошибок 6.2 Протоколы повторной передачи Канальный или сквозной контроль? Протоколы повторной передачи: обзор и обобщение 6 3 Протокол с остановкой и ожиданием Краткое описание Корректность Эффективность 6 4 Протокол с чередованием битов (Alternating Bit Protocol - АВР) Краткое описание Корректность Эффективность 6.5 Протокол с возвратом к N (Go Back N - GBN) Краткое описание Эффективность Конкретные примеры: выбор W Краткое обобщение 6 6 Протокол с выборочным повторением (Selective Repeat Protocol - SRP) Набор операций Эффективность Корректность 6 Краткое резюме протокола с выборочным повторением SRP 6.7 Примеры Канальный уровень SNA Канальный уровень в сетях пере- передачи данных общего пользования Протокол повторной передачи в Интернет Канальный уровень в Frame Relay Протокол XMODEM Протокол Kermit 6.8 Дополнение 1. Коды для контроля ошибок Проверка по циклическому коду Коды Боуза-Чоудхури-Хоквингэма и Рида-Соломона Сверточиый коды Турбо-коды 6 9 Дополнение 2. Корректность про- протокола АВР 6.10 Дополнение 3. Корректность сети с дисциплиной Протокол с чередованием битов - АВР Протокол с возвратом к N — GBN 6.11 Дополнение 4. Борьба с перегруз- перегрузками и управление потоком в Ин- Интернете Цели и методы Метод коррекции окна по задержке (Вегас) Метод коррекции окна по потерям (Тахо, Риио) Увеличение прибавлением — уменьшение делением Несовместимость методов Рино и Вегас Управление, осиоваииое на скоро- скорости передачи: ABR в сетях ATM Обнаружение поздних подтвержде- подтверждений 6.12. Дополнение 5. Эффективность протоколов при наличии ошибок Глава 7. Физический уровень 7.1 Линии передачи и их характеристики Цифровая линия Частота и распространение сигналов Ограничения параметров передачи Преобразование цифровой инфор- информации в сигналы, передаваемые по линии. 7.2 Оптические линии Общие положения
Распространение по волокну Источники световых сигналов Детекторы светового излучения Инфракрасная связь в свободном пространстве 7.3 Металлические линии Общие положения Модуляция Кабельное телевидение и системы «видео по запросу» 7.4 Радиолинии Общие положения Распространение радиоволн Сотовые сети 7.5 Дополнение 1: Пропускная способ- способность по Шеиноиу 7 6 Дополнение 2: дискретизация и квантование 7 7 Дополнение 3: сеть SONET Архитектура SONET Циклы 7.8 Дополнение 4: Энергетические со- соотношения в волокоино оптичес- оптической линии 7.9 Дополнение 5: RS - 232 - С 7.10 Дополнение 6. ADSL Глава 8. Защита и сзкатие информации 8.1 Угрозы безопасности и средства защиты Угрозы безопасиости компьютеров Угрозы безопасиости пользовате- пользователей компьютерных систем 8 2 Криптография Основные принципы Криптографические системы с зак- закрытым ключом Криптографические системы с от- открытым ключом Хеширование 8.3 Системы защиты Целостность Управление ключами Аутентификация Дублирование и уничтожение Система Kerberos Система PGP 8.4 Принципы сжатия информации Сжатие с потерями и без потерь Пакетное, поточное, постепенное, многоуровневое Кодирование источника Нахождение минимального числа битов Кодирование методом Хаффмана Сжатие по методу Лемпеля-Зива 8.5 Сжатие цифровых аудиосигналов Дифференциальная ИКМ Адаптивная дифференциальная Шльсио-кодовая модуляция 1КМ) КМ с разделением полос Линейное предсказание с кодовым возбуждением (CELP) 8 6 Сжатие цифровых видеосигналов Некоторые алгоритмы Дискретное косииусоидальное преобразование (DCT) Компенсации движения Стандарт MPEG 8.7 Дополнение 1. Криптографические системы с секретным ключом Секретные коды 8.8 Дополнение 2. Криптографические системы с открытым ключом Система шифрования RSA 8.9 Дополнение 3. Доказательство лем- леммы RSA 8.10 Дополнение 4. Теория кодирова- кодирования источника Глава 9. Оценки характеристик и контроль состояния 9.1 Контроль состояния, SNMP, СМОТ, RM0N Выводы по контролю состояний 9.2 Модели и анализ Очередь с дисциплиной FIFO Очередь М/М/1 Приложение к статистическому мультиплексированию ети очередей М/М/1 Очереди M/G/1 Предостережение Очереди с перерывами Системы с приоритетами Системы циклического обслужива- обслуживания Выводы по математическим моде- моделям 9 3 Имитационное моделирование Моделирование по времени Моделирование по событиям Регенеративное моделирование Программные пакеты моделирова- моделирования Выводы по моделированию Приложение А. Вероятность АЛ Вероятность и случайные перемен- переменные А.2 Математическое ожидание А.З Независимость А.4 Регенеративный метод A.S Дополнение 1: Канальное кодиро- кодирование Приложение В. Очереди и сети, построенные на базе очередей 8.1 Марковские цепи и очереди типа М/М/1. 8.2 Сети очередей М/М/1 8.3 Средняя задержка Приложение С. Основные положения теории передачи сигналов. СЛ Спектр частот сигнала С 2 Модуляция и демодуляция С.З Фазовая автоподстройка частоты С.4 Теорема Найквиста
Вы можете приобрести и заказать книги по цеиам издательства. М. X. Джойс Электроника - практический курс. 1999; объем 528 стр.; формат 70x100/16, пер. №7 S В книге-переводе последнего, 3-его английского издания - рассмотрены принципы построения базовых схем современной электроники, широкого спек- спектра как аналоговых, так и цифровых устройств. Это учебное пособие хи студентов средних и высших учебных заведений радиотехнических и электрон- электронных специальностей будет полезно и широкому кругу радиолюбителей К. Б. Клаассеи Основы измерений. Электронные методы и приборы в измерительной технике. 2000; объем 352 стр.; формат 70x100/16, пер. №7 •S Перевод английского издания известного вводного курса основ теории н техники измерений, основанного на едином системном подходе к электричес- электрическим, тепловым, механическим измерениям. Учебное пособие для студентов и преподавателей естественно-научиых и технических университетов, специали- специалистов по метрологии, приборостроению и системам управления. ■S В первой части книги обсуждаются основы теории измерений, погреш- погрешности, системы единиц, физические эталоны и принципы измерений. Вторая часть имеет практическую направленность, включая в себя описание различ- различных преобразователей и конкретных измерительных систем, вопросы оциф- оцифровки, борьбы с паразитными сигналами и шумами. Р. М. Кроновер Фракталы и хаос в динамических системах. Основы теории. 2000; объем 352 стр.; формат70x100/16, пер. №7 ■S Первое полноценное учебное пособие по новой, быстроразвиваюшейся математической дисциплине - до сих пор на русском языке выходили лишь монографии. Хорошо подобранные упражнении и алгоритмы делают книгу отличным пособием для студентов старших курсов и аспирантов, специали- специалистов по приложениям этой теории в различных областях от биологии до лингвистики. ■S Рекомендовано УМО в области электроники и прикладной математики в качестве учебного пособия для студентов по специальности 01.02 «Приклад- «Прикладная математика». Т. Е. Фабер Гидроаэродииамика. 2001; около 600 стр.; формат 70x100/16, пер. №7 S Учебное пособие по физическим основам гидроаэродинамики, охватывающее все разделы механики жидкостей и газов, включая неиьютоновы жидкости. Такого учебника для физиков и инженеров на русском языке ие было уже более 30 лет. S Специальное дополнение посвящено основам расходометрии и основным методам измерения параметров потоков.
Ю. А. Данилов Лекции по нелинейной динамике. 2001; 184стр.; формат60x90/16, пер.№7 лекций, прочитанных автором в последние годы в МИФИ, МГУ и университетах Западной Европы. В учебном пособии подробно изложены дис- дискретные отображения и теория непрерывных систем, хаотическое поведение, фрактальная теория и степенные законы, синергетика и эргодическая теория. ^Отличительной особенностью курса является конкретность (доведение формул до вида, удобного для практических расчетов) и точное изложение основных понятий, обычно приводимых без определений. S Для студентов и аспирантов физико-математических, биологических и хи- химических специальностей и всех, кто интересуется современным состоянием науки о поведении сложных систем различной природы (от физических до соци- социальных, экономических и т.п.) Заявки на книги присылайте по адресу: 107140 Москва, Краснопрудный пер., д. 7 тел./факс @95) 264-43-47; тел. @95) 207-60-91,207-60-85 e-mail: postmarket @ mtu-net.ru В заявке обязательно указывайте свой почтовый адрес! С полными оглавлениями всех уже выпущенных, а также готовящихся к печати наших книг Вы можете ознакомиться на сайте http://www.top-kniga.ru/ (в разделе «наши поставщики»). Компьютерная верстка - С. А. Кулешов Ответственный за выпуск - Л.Ф.Соловейчик Лицензия ЛР № 090215 Формат 60x90/16. Печать офсетная. Печ.л. 20 Vi. Тираж 2000экз. Зак. 2282. Оригинал-макет подготовлен ЗАО «Предприятие Постмаркет» Отпечатано в ФГУП Издательство «Известия» Управления делами Президента РФ 101999, ГСП-9, Москва, К-6, Пушкинская пл., д.5.