Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основные математические принципы в реализации некоторых алгоритмов информационной безопасности. Учебное пособие
.pdf
Доказательство
s
Докажем теорему методом полной математической индукции.
Предположение индукции: при t = 2 условие теоремы выполняется,
так как 2 – простое число.
Допустим, что утверждение теоремы верно
2,tn
, n ≥ 2. Дока-
жем истинность для t = n + 1.
Если n + 1 простое, то для него утверждение теоремы верно.
Если n + 1 составное, тогда a, b, 1 < a < n + 1, 1 < b < n + 1,
что n + 1 = a b. По предположению индукции каждое из чисел а, b
или простое, или разлагается в произведение простых чисел, т. е. получили разложение n + 1 в произведение простых чисел.
Теперь докажем единственность разложения индукцией по параметру s(n), где s(n) − наименьшее значение s по всем разложениям вида
(2.5) для числа n. При s(n) = 1 это очевидно. Допустим, что это верно
для всех п при s(n) < s и любом фиксированном s > 1, и докажем для п
при s(n) = s. Пусть наряду с (2.5) существует представление
,.., ,
,...,
qq
где
1
− простые числа и
t
nq q
1
qq
1
Так как р1|п, то по обобщению свойства б) р1|qi при некотором
и тогда по свойству в)
.qp
В силу симметрии имеем также
11
pq
1.i
Отсюда и из неравенства
(2.6)
t
... .
t
qq
1 i
.qp
Следовательно,
11
1,it
получаем:
11
Теперь из (2.5), (2.6), учитывая отсутствие делителей нуля в Z, получаем
два представления для числа
/:пр
1
,
.qp
/ ... ,.., .
пр р р qq
12 2
t
По предположению индукции эти разложения совпадают, а потому
совпадают и разложения (2.5), (2.6). Теорема полностью доказана.
Пример. Найдем НОД и НОК для чисел 2346, 646.
Второй способ. Используем разложение данных чисел на простые
множители:
2346 = 2 1173 =2 3 391 = 2 3 17·23;
646 = 2 323 = 2 17 19;
31

(2346, 646) = 2 17 = 34;
s
s
s
p
s
p
s
s
s
s
s
p
[2346, 646] = 2 3 17 23 19 = 44 574.
Определение. Представление целого числа п в виде
где = ±1,
, , ...,
12
npp p
, , ...,
pp
12
N
называется каноническим разложением числа п.
s
12
,
12
простые числа;
...
pp
12
Следствие теоремы 2.10. Для любого целого числа п ≠ 0 суще-
ствует каноническое разложение, и оно единственно.
Утверждение 2.2. Для любых чисел ,ab, представимых в виде:
и
12
app p
,
12
где
,{1,1}, 0, 0,1,
12
ii
...
is ,
12
bpp p
,
12
...
12
pp
,
наибольший
общий делитель и наименьшее общее кратное находятся следующим
образом:
ss
min( , ) max( , )
(, ) ,[, ] .
ab p ab p
11
ii
ii ii
ii
В связи с большой ролью, которую играют простые числа в теории
делимости и арифметике в целом, множество простых чисел издавна привлекало к себе внимание математиков. Изучением свойств этого множества занимались такие выдающиеся математики, как Евклид, Ферма, Эйлер, Лежандр, П.Л. Чебышёв и др.
Особенно много вопросов, связанных с простыми числами, относится к их распределению в натуральном ряду. Непосредственно из
имеющихся таблиц усматривается, что простые числа распределены в
натуральном ряду весьма неравномерно. Так, например, в первой сотне
насчитывается 25 простых чисел, во второй 21, в сорок девятой 8,
в пятидесятой 15. Однако, несмотря на неравномерность распределения, наблюдается общая тенденция к постепенному уменьшению количества простых чисел на все более удаленных отрезках натурального
ряда одинаковой длины. При удалении по натуральному ряду в сторону возрастания чисел начинают появляться все более длинные проме-
32

жутки, не содержащие простых чисел. В связи с этим можно отметить
следующий интересный факт. Каково бы ни было натуральное число п,
можно найти п составных чисел, непосредственно следующих друг за
другом, например,
(п + 1)! + 2, (п + 1)! + 3, ..., (п + 1)! + (п + 1).
Первое слагаемое делится на 2, второе на 3 и т. д. до последнего
n-го, которое делится на (п + 1). Таким образом, каждое из этих чисел
имеет положительный делитель, отличный от единицы и самого себя
(составные числа).
В связи с этим естественно возникает вопрос: не является ли множество простых чисел конечным? Отрицательный ответ на этот вопрос дал
еще Евклид.
Теорема 2.14 (теорема Евклида). Множество простых чисел бес-
конечно.
Доказательство
Предположим противное, т. е. множество простых чисел конечно и
представляет собой ряд следующего вида:
2, 3, 5, ..., р
. (2.7)
k
Рассмотрим число N = 2 3 5 ·...· рk +1. Так как каждое число
из (2.7) делит число 2 3 5 ·...· рk, но не делит единицу, то число N не
делится ни на одно из чисел (2.7), т. е. ни на одно простое число. А так
как оно больше единицы, то это противоречит теореме 2.13. Получили
противоречие, что и требовалось доказать.
Теорема 1.15. Если натуральное число n (n > 1) не делится ни на
одно простое число, не превосходящее n , то оно простое.
Доказательство
Пусть n – составное. Тогда n = a b, где 1 < a < n, 1 < b < n. Оче-
видно, что a, b не могут быть одновременно больше n .
Пусть теперь a ≤ n . Так как а > 1. то у а должен существовать, по
крайней мере, один простой делитель р. Значит, p|n, где p ≤ a ≤ n ,
это противоречит условию, что и требовалось доказать.
33

Для того чтобы из множества натуральных чисел выделять простые
N
N
N
N
числа, можно взять все натуральные числа до заданной границы и,
пользуясь теоремой 2.15, определить для каждого из них, является ли
оно простым или составным.
Более удобен способ отсеивания составных чисел, получивший
название решета Эратосфена2.
Теорема 2.16 (решето Эратосфена). 1) Если в множестве нату-
ральных чисел 2, 3, 4, …, N зачеркнуть числа, кратные первым r простым числам 2, 3, 5,…, pr, то первое (наименьшее) незачеркнутое чис-
ло будет простым.
2) Если вычеркнуть все числа, кратные всем простым числам до
, т. е. выбрать r так, что pr ≤
≤ p
, то оставшиеся числа будут
r+1
совпадать с множеством всех простых чисел p, таких, что N < p ≤ N.
Доказательство
1) Каждое составное число n делится, по крайней мере, на одно
простое число, меньшее, чем n. Если число n не делится ни на одно
простое число, меньшее, чем n, то оно является простым.
2) Каждое составное число n, такое, что n <
≤ n, делится (тео-
рема 2.15), по крайней мере, на одно простое pr ≤ n ≤ N , т. е. на одно из чисел 2, 3, 5, …,
pNpp
и, следовательно, будет вы-
rr r
,
1
черкнуто.
Простые числа p >
не делятся на 2, 3, 5, …, pr и не будут вы-
черкнуты.
Алгоритм нахождения простых чисел ≤ N
1. Первое число 2 – простое. Вычеркиваем все числа, кратные 2.
2. Первое невычеркнутое число 3 простое. Вычеркиваем все чис-
ла, кратные 3.
2
Эратосфен (276196 гг. до н. э.) – библиотекарь Александрийской биб-
лиотеки. Занимался исследованием многоугольных чисел. Известен как математик, географ и астроном.
34

3. Первое невычеркнутое число 5 простое, и т. д. продолжаем,
пока не вычеркнем все числа, кратные найденным простым числам 2,
3, 5, …, pr. Все оставшиеся невычеркнутыми числа дадут нам множе-
ство простых чисел, лежащих между N и N (включая N, если оно
простое), а вместе с ранее найденными 2, 3, 5,…, pr мы получаем все
простые числа, не превосходящие N.
Пример. N = 20.
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.
Обозначим через π(х) число простых чисел, не превосходящих х.
Тогда теорему 2.14 можно записать в следующем виде:
если х → ∞, то π(х) → ∞.
Теорема Евклида была обобщена немецким математиком
П.Г.Л. Дирихле (18051859 гг.), который доказал, что любая арифметическая прогрессия, первый член и разность которой взаимно просты,
содержит бесконечное множество простых чисел.
Ни теорема Евклида, ни теорема Дирихле ничего не говорят о порядке роста функции π(х). Некоторое представление об этом дает следующая теорема, сформулированная впервые Эйлером:
если х → ∞, то π(х)/x → 0.
Таким образом, хотя простых чисел «бесконечно много», однако
встречаются они в натуральном ряду «бесконечно реже», чем натуральные.
В 1737 г. Эйлер доказал, что ряд чисел, обратных простым числам,
т. е. ряд 1/2 + 1/3 + 1/5 +... расходится. Из этой теоремы следует также,
что простые числа расположены в натуральном ряду «гуще», чем числа, являющиеся квадратами, поскольку известно, что ряд 1/12+ +1/22 +
+ 1/32 +... сходится.
В 1808 г. Лежандр опубликовал эмпирически найденную формулу
()
xx
x
ln 1, 08366
,
которая при больших значениях х давала приближенные значения
для π(х).
35

В 1848 г. П. Л. Чебышёв доказал, что если предел отношения π(х):
х/ln х при х → ∞ существует, то он равен единице. Существование же
этого предела было доказано в 1896 г. одновременно французским математиком Е. Адамаром (18651963 гг.) и бельгийским математиком
Ш. Ла Балле Пуссеном (18661962 гг.). Таким образом, было доказано
асимптотическое равенство π(х) ~ х/ln х.
В ходе развития теории чисел математиками выделялись и изучались отдельные классы простых чисел. Так, например, Ферма, рас-
n
сматривая числа вида
2
21
, выдвинул гипотезу о том, что эти числа
являются простыми при всех натуральных п (проверив ее лишь для
5
п = 1, 2, 3, 4). Однако позднее Эйлер показал, что число
n
ставное. В настоящее время числа вида
2
21
называются числами
2
21
со-
Ферма. К настоящему времени известно много составных чисел Ферма
и не найдено ни одного нового простого числа Ферма. Французский
математик М. Мерсенн (15881648 гг.) особо интересовался простыми
числами вида 2n – 1, называя их совершенными. Теперь они называются простыми числами Мерсенна.
Последние два столетия математики пытались доказать, что запас
простых чисел-близнецов неисчерпаем. Близнецами называют пары
простых чисел, отличающихся на 2, т. е. являющихся ближайшими соседними простыми числами. Например:
(5, 7), (11, 13), (17, 19), …, (22271, 22273),…,
(1000000000061, 1000000000063)...
Факт того, что множество простых чисел-близнецов бесконечно,
остается недоказанным.
В 1966 г. китайскому математику Чену Джинграну удалось показать, что существует бесконечное множество пар простых и почти простых чисел. У настоящих простых чисел нет делителей, а почти простые числа уступают простым в том, что имеют два простых делителя.
Например, число 13 – простое, а число 21(= 3 7) – почти простое.
Ученый доказал, что существует бесконечно много случаев, когда простое число имеет в качестве близнеца либо другое простое число, либо
почти простое число.
36

Следующая загадка простых чисел восходит к 1742 г., когда Христиан Гольдбах, учитель царя Петра I, написал письмо великому математику Леонарду Эйлеру. Рассмотрев десятки чисел, Гольдбах заметил, что любое четное число п ≥ 4 представимо в виде суммы двух
простых чисел, а любое нечетное п ≥ 7 представимо в виде суммы трех
простых чисел, т. е.
4 = 2 + 2;
6 = 3 + 3;
8 = 3 + 5;
10 = 5 + 5;
50 = 19 + 31;
100 = 53 + 47;
21000 = 17 + 20983;
……………….
Для нечетных чисел, больших некоторой константы, эта проблема
была положительно решена советским академиком И. М. Виноградовым (18911982 гг.). Для четных чисел она остается открытой. Таблица простых чисел до 6000 представлена в прил. Б.
Приведенные здесь проблемы, как и многие другие проблемы теории чисел, носят, на первый взгляд, чисто познавательный характер.
В действительности же результаты, полученные в ходе решения проблем теории чисел, не только отвечают на загадки натурального ряда
чисел, но и находят применение в самых различных областях науки и
техники. Так, например, числа Мерсенна и алгоритмы разложения
натуральных чисел на простые множители находят приложения в
теории кодирования и в теории линейных рекуррентных последовательностей; метод тригонометрических сумм, созданный И.М. Виноградовым для решения проблемы Гольдбаха–Эйлера, применяется при
вычислении неэлементарных интегралов, при исследовании статистических свойств последовательностей и т. д.
Программная генерация таблицы простых чисел на языке С++ (целесообразно также работать с типом uint64_t):
37

#include <iostream>
#include <string>
#include <vector>
using namespace std;
constexpr inline unsigned long pow2(unsigned long i) { return 1 << i; }
inline unsigned long isqrt(unsigned long a)
{
unsigned long x = a;
for(unsigned long z = 0; x!= z; )
{
z = x;
x = (x + a/x)/2;
}
return x;
}
constexpr unsigned long MAX_LIM = 1000000000; //pow2(31) - 1;
constexpr unsigned long ARR_LIM = (MAX_LIM >> 6) + 1;
const unsigned long SQR_LIM = isqrt(MAX_LIM);;
unsigned long primes[ARR_LIM] = { 0 }; // 0 - простое, 1 - составное
auto set_primes = [](unsigned long idx) { primes[idx >> 6] |=
pow2((idx&0x0000003F)>>1); };
auto get_primes = [](unsigned long idx) { return primes[idx >> 6] &
pow2((idx&0x0000003F)>>1); };
vector<unsigned long> Primes;
void makePrimes()
{
for(unsigned long j = 9; j <= MAX_LIM; j += 3)
{
if (j%2) set_primes(j);
}
for(unsigned long i = 5; i <= SQR_LIM; i += 6)
{
if (get_primes(i)) continue;
for(unsigned long j = i * i; j <= MAX_LIM; j += i)
{
if (j%2) set_primes(j);
}
}
for(unsigned long i = 7; i <= SQR_LIM; i += 6)
{
if (get_primes(i)) continue;
38

for(unsigned long j = i * i; j <= MAX_LIM; j += i)
{
if (j%2) set_primes(j);
}
}
Primes.reserve(55000000);
Primes.push_back(2);
for(unsigned long i = 3; i <= MAX_LIM; i+=2)
{
if (get_primes(i)) continue;
Primes.push_back(i);
}
}
vector<unsigned long> * factors(long long L, vector<unsigned long> * v = 0)
{
if (v == 0) v = new vector<unsigned long>;
if (L == 1) return v;
for(auto f: Primes)
{
if (f*f > L) {
v->push_back(L);
return v;
}
if (L%f == 0)
{
v->push_back(f);
return factors(L/f,v);
}
}
return v;
}
Задания для самостоятельного решения
1. Исследовать, какие из чисел между 2320 и 2350 являются про-
стыми. То же – между числами 2640 и 2680.
2. Найти все простые числа между числами 1300 и 1350.
3. Разложить на простые множители число 2
4. Показать, что при натуральном n > 1 число n
18
+ 318.
4
+ 4 составное.
То же – для n4 + n2 + 1.
39

5. Найти значения простого числа р, если известно, что 4р
6р2 + 1 – тоже простые числа.
6. Найти значения простого числа р, если известно, что р + 10 и
р + 14 – тоже простые числа.
7. Если перенумеровать все простые числа, начиная с 5, то каждое
простое число будет больше своего утроенного номера.
8. Показать, что если простое число р > 5, то его квадрат при деле-
нии на 30 должен давать остаток, равный 1 или 19.
9. Показать, что если р и q – простые числа, большие 3, то р
кратно 24.
10. Существуют ли такие натуральные числа x, y, z, что
2x 34 26y = 39z?
2
+ 1 и
3
– q2
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
