10.01.2016
Теория сравнений
В 1849 году Чебышёв защитил в Петербургском университете докторскую диссертацию «Теория сравнений».
Она стала первой отечественной монографией по теории чисел. Этот труд несколько раз переиздавался,
был переведен на немецкий и итальянский языки.
Во введении Чебышёв отмечает нескольких математиков, внесших вклад в развитие теории чисел - Ферма, Эйлера, Лагранжа, Лежандра, Гаусса.
Чебышёв пишет, что теория чисел есть наука о решении неопределенных уравнений в целых числах.
Она отличается от арифметики тем, что рассматривает числа только в отношении их способности удовлетворять
неопределенным уравнениям. Она отличается от алгебры тем, что рассматривая уравнения, она ограничивается только
целыми значениями неизвестных.
Книга состоит из нескольких глав, в частности:
1. Глава первая. О сравнении вообще.
2. Глава вторая. О сравнении первой степени.
3. Глава третья. О сравнениях высших степеней вообще
...
7. Глава седьмая. О сравнениях второй степени с двумя неизвестными.
В конце книги есть приложения по простым числам, квадратичным формам.
Книга построена по принципу доказания теорем общим числом более 30. Подробные доказательства можно найти в самой книге Чебышёва
Теория сравнений
Введение
Начнем с первой теоремы.
Теорема 1
Если два числа A и B взаимно просты с третьим число C, то и произведение AB будет числом, взаимно простым с C.
Теорема 2
Пусть два числа C и A взаимно просты. Пусть есть третье число B, такое, что произведение AB делится на C.
Тогда B делится на C.
Теорема 3
Пусть два числа A и B взаимно просты. Пусть есть третье число C, которое делится и на A, и на B.
Тогда C делится и на произведение AB.
Далее Чебышёв переходит к рассмотрению канонического разложения числа и формулирует следующие теоремы:
Теорема 4
Число N может делиться на число P только в том случае, когда все простые множители числа P
входят в состав простых множителей числа N, где степени их не ниже, чем в P.
Теорема 5
Для числа N возможно только одно разложение на простые множители.
На основе этих двух теорем о разложении доказываются следующие:
Теорема 6
Если N делит квадрат числа M, но само не может делиться на квадрат какого-нибудь числа,
то N делит и само число M.
Например, пусть N=15. В его каноническом разложении все простые числа находятся в первой степени.
Пусть M=45, и его квадрат равен 2025. Если 2025 кратно 15, то и 45 кратно 15.
Теорема 7
Пусть дано число N. Корень h-й степени из этого числа есть число целое только в том случае,
когда степени его простых множителей кратны h.
Например, если рассмотреть число 576=2632 , видно, что только корень квадратный из 576 является целым числом.
С помощью следующей теоремы можно определить сумму делителей числа и число этих делителей:
Теорема 8
Пусть число N имеет каноническое разложение в виде N = αmβnγp....
Тогда число делителей числа N есть (m+1)(n+1)(p+1)... , а сумма различных делителей есть:
Например, число 72 = 2332, имеет сумму делителей, равную
(24-1)⁄(2-1) * (33-1)⁄(3-1) = 195 ,
а число делителей равно (3+1)*(2+1) = 12, что соответствует действительности,
поскольку делителями числа 72 являются числа 1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72
Теорема 9
Пусть число N имеет каноническое разложение в виде N = αmβnγp...,
где по крайней мере одно из чисел m, n, p ... есть число нечетное.
Тогда число N можно разожить на два множителя числом способов, равных 0.5(m+1)(n+1)(p+1)...,
Если же все показатели четные, то число таких разложений равно 0.5(m+1)(n+1)(p+1)... + 0.5,
Например, число 72 = 2332, число разложений равно 0.5(3+1)(2+1)=6:
1*72, 2*36, 3*24, 4*18, 6*12, 8*9
Для числа 36 = 2232, число разложений равно 0.5(2+1)(2+1) = 5:
1*36, 2*18, 3*12, 4*9, 6*6
Следующая теорема сформулирована для арифметических прогрессий:
Теорема 10
Если разность прогрессии есть число, взаимно простое с p, а число членов равно mp,
то в такой прогрессии число членов, делящихся на p, равно m,
Теорема 11
Пусть a - простое число. Пусть b - число, взаимно простое с a.
Рассмотрим ряд 1, 2, 3, ..., abN-1.
Тогда число членов этого ряда, взаимно простых с b,
относится к числу членов этого ряда, взаимно простых с a и b, как a к a-1,
На основании этих двух теорем можно вывести следующую, которая является аналогом известной теоремы Эйлера о числе взаимно простых:
Теорема 12
Пусть число N имеет каноническое разложение в виде N = αmβnγp...πr,
тогда число чисел, взаимно простых с N и меньших N, равно
Например, 36 = 2232.
Число чисел, взаимно простых с 36 и меньших, чем 36, равно 2232 * ((2-1)⁄2)((3-1)⁄3)=12.
Глава 1 О сравнении вообще
Теория сравнений имеет предметом исследования неопределенные уравнения, в которых одна из неизвестных входит в первой степени.
Общий вид таких уравнений:
F(x,y,z...) = Au + B
где F - данная функция, A и B - известные числа. Если число u неизвестно, то
Последнее уравнение можно представить в виде
F(x,y,z...) ≡ B(мод A)
Например, для записи: 17-5 делится на 3:
17 ≡ 5(мод 3)
Вообще, выражение вида
M ≡ N(мод A)
читается как сравнение, числа M и N называются сравнимыми по модулю A, число A - модуль сравнения.
M и N могут быть как числами положительными, так и отрицательными, A всегда положительно.
Если через r обозначить остаток от деления M на A, q - частное при деления M на A, то
M = Aq + r
Если M делится на A без остатка, то
M ≡ 0(мод A)
Сравнения имеют свойства:
1. Два числа, сравнимые с каким-то числом по одному модулю, сравнимы и между собой по тому же модулю.
2. В сравнениях, подобно уравнениям, члены могут быть переносимы из одной части в другую.
3. Два или несколько сравнений с одним и тем же модулем можно почленно складывать и вычитать.
4. Члены сравнения могут быть умножены на одно и то же число.
5. Два или несколько сравнений с одним и тем же модулем можно почленно перемножить.
6. Значения целой функции с целыми коэффициентами от двух чисел, сравнимых по какому-нибудь модулю,
сравнимы по тому же модулю.
7. Члены сравнения могут быть сокращены на их общего множителя, если этот множитель - взаимно простое с модулем.
8. Если одна часть сравнения и модуль делятся на какое-нибудь число, то на то же число должна делиться
и другая часть сравнения.
9. Общий множитель членов сравнения и модуля может быть сокращен.
10. Два числа, сравнимых по двум или нескольким модулям, которые взаимно просты. сравнимы и по их произведению.
11. Не нарушая сравнения, модуль может быть заменен числом, на которое он делится.
Следуюшая теорема для сравнения с одним неизвестным, где f(x) - целая функция с целыми коэффициентами.
Теорема 13
Если сравнению f(x) ≡ 0(мод p) эквивалентно равенству x = a, то оно равно для всех чисел,
сравнимых с a по модулю p.
Из всех таких чисел, сравнимых с a по модулю p, особого внимания заслуживают два:
1. Наименьшее положительное из всех чисел, сравнимых с a по модулю p - наименьший положительный вычет из a по модулю p,
1. Наименьшее по модулю отрицательное из всех чисел, сравнимых с a по модулю p - наименьший отрицательный вычет из a по модулю p,
Одно из двух этих чисел, наименьшее по модулю, называтеся абсолютно малым вычетом из a по модулю p,
Например, для определения наименьшего положительного вычета числа 23 на число 7 в формуле 23 -7N, где N=3, и вычет равен 2.
Для определения наименьшего отрицательного вычета числа 23 на число 7 в формуле 23 -7N N = 23/7 = 3 + 2/7.
Вместо 2/7 подставляем 1 , получаем N=4, отсюда наименьший отрицательный вычет равен 23 -7*4 = -5.
Глава 2 О сравнении первой степени
Общий вид сравнений первой степени такой:
ax - b ≡ 0(мод p)
где a, b - какие-нибудь числа, положительные или отрицательные, и p - число положительное.
Здесь возможны два случа1: первый - числа a и p - взаимно простые, второй - имеют общий множитель.
Для первого случая справедлива следующая теорема:
Теорема 15
Сравнение ax - b ≡ 0(мод p) при a взаимно простом с p всегда имеет одно решение.
Далее следуют две теоремы - малая теорема Ферма и теорема Эйлера, которая является обобщением малой теоремы Ферма.
Малая теорема Ферма впервые была доказана также Эйлером.
Теорема 16
Если p - число простое и не делит a, то ap-1 ≡ 1(мод p)
Доказательство:
Возьмем в качестве примера a=12 и p=7.
Посчитаем вычеты для a, 2a, 3a, ... , (p-1)a:
12 ≡ 5(мод 7)
24 ≡ 3(мод 7)
36 ≡ 1(мод 7)
48 ≡ 6(мод 7)
60 ≡ 4(мод 7)
72 ≡ 2(мод 7)
Видно, что ряд вычетов состоит из 1, 2, 3, ... , p-1
Перемножим эти шесть сравнений друг на друга и получим:
1*2*3*4*5*6*a6=1*2*3*4*5*6 (мод 7)
Поскольку левую и правую часть сравнения можно сокращать так же, как и обычное уравнение, после сокращения получаем:
a6=1 (мод 7)
что и требовалось доказать.
Следующая теорема называется теоремой Эйлера и является обобщением для предыдущей теоремы.
Теорема 17
Пусть дано число m. Пусть в интервале от 1 до m, не включая m, находятся числа, взаимно простые с m. Число этих взаимно простых
чисел обозначим как n. Пусть есть третье число a, которое является взаимно простым с m. Тогда
an ≡ 1 (мод m)
Доказательство:
Пусть m = 12. Для этого числа будет четыре числа, взаимно простых с m и меньших m: 1, 5, 7, 11.
Т.е. n = 4. И возьмем какое-нибудь произвольное a, взаимно простое с m, например a = 17. Тогда
174 ≡ 1 (мод 12)
Для доказательства вычислим сравнения для каждого из этих 4-х взаимно простых чисел, при этом каждое число умножим на a, по модулю m:
17*1 ≡ 5 (мод 12)
17*5 ≡ 1 (мод 12)
17*7 ≡ 11 (мод 12)
17*11 ≡ 7 (мод 12)
После чего перемножим эти сравнения:
1*5*7*11*174 ≡ 1*5*7*11 (мод 12)
Разделив обе части на 1*5*7*11, получаем
174 ≡ 1 (мод 12)
что и требовалось доказать
На основании последних двух теорем можно решать сравнения вида
ax - b ≡ 0 (мод p)
Эти сравнения можно разделить на две категории: первая - когда p взаимно простое с a и само p простое,
и вторая - когда p взаимно простое с a, но само p - составное.
В первом случае x можно найти по формуле
x ≡ bap-2 (мод p)
Например: 3x - 8 ≡ 0 (мод 5)
3x - 8 ≡ 0 (мод 5)
x ≡ 8*35-2 (мод p)
x ≡ 216 (мод p)
x ≡ 1 (мод p)
Во втором случае x можно найти по формуле
x ≡ ban-1 (мод p)
Во втором случае нужно дополнительно находить число n, которое есть число чисел, взаимно простых с p и меньших p.
Его можно найти по формуле из теоремы 12.
Например: 3x - 8 ≡ 0 (мод 5)
2x - 7 ≡ 0 (мод 15) , где 15=3*5
x ≡ 7*27 (мод 15)
x ≡ 896 (мод 15)
x ≡ 11 (мод 15)
Сравнение первой степени
ax ≡ b (мод p)
не имеет решения, если a и p имеют общий множитель, который не делит b.
Теорема 18
Сравнение ax - b ≡ 0 (мод p) не имеет решения, если общие множители a и p не делят b.
Теорема 19
Если a и p имеют наибольший общий делитель (НОД) d, и d делит b, то сравнение ax - b ≡ 0 (мод p)
имеет d решений, которые могут быть представлены как:
x ≡ α (мод p)
x ≡ α + p/d (мод p)
x ≡ α + 2p/d (мод p)
...
x ≡ α + (d-1)*p/d (мод p)
где α есть число, меньшее чем p/d b и большее 0, найдено может быть из сравнения:
(a/d)*x - b/d ≡ 0 (мод p/d)
Например, рассмотрим сравнение 15x - 9 ≡ 0 (мод 12)
Здесь 15 и 12 имеют общий делитель 3, b также делится на 3, сравнение имеет три решения.
Сначала нужно найти α. Перепишем сравнение, сократив его на d=3:
5x - 3 ≡ 0 (мод 4)
Это сравнение относится к случаю, когда p взаимно простое с a, но само p - составное.
Решение можно найти по формуле (см. выше):
x ≡ ban-1 (мод p)
x ≡ 3*5 (мод 4)
x ≡ 3 (мод 4)
Т.о. мы нашли число α=3. Далее находим три решения исходного сравнения по модулю 12 по теореме 19:
x≡3 x≡3+4 x≡3+8 (мод 12)
x≡3 x≡7 x≡11 (мод 12)
Глава 3 О сравениях высших степеней
В этой главе будут рассмотрены сравнения с простыми модулями. Общий вид таких сравнений будет иметь вид:
Axm + Bxm-1 + Cxm-2 + ... + Hx + S ≡ 0 (мод p)
где p - простое число, A, B, C, ... , H, S - какие-то числа.
Если предположить, что все коэффициенты, кроме A, кратны модулю p, то сравнение может быть приведено к виду
Aα - 1 ≡ 0 (мод p)
где α - это альфа. Последнее сравнение можно в свою очередь привести к виду
xm + Bαxm-1 + Cαxm-2 + ... + Hαx + Sα ≡ 0 (мод p)
Рассмотрим пример: нужно решить сравнение
2x3 + 3x + 7 ≡ 0 (мод 11)
Сначала нужно найти альфа:
2α - 1 ≡ 0 (мод 11)
Здесь α = 6. Умножаем последнее сравнения сначала на 3x, потом на 7:
2*3*6*x - 3*x ≡ 0 (мод 11)
2*7*6 - 7 ≡ 0 (мод 11)
Складываем эти сравнения с исходным и получаем
2x3 +2*3*6*x + 2*6*7 ≡ 0 (мод 11)
Сокращаем на 2 и получаем коэффициент при высшей степени 1
x3 +18x + 42 ≡ 0 (мод 11)
Далее идут несколько теорем
Теорема 20
При p простом сравнение
xm + Bxm-1 + Cxm-2 + ... + Hx + S ≡ 0 (мод p)
не может иметь более m решений.
Теорема 21
Если в сравнении xm + Bxm-1 + Cxm-2 + ... + Hx + S ≡ 0 (мод p)
не все коэффициенты делятся на p, то оно более m решений иметь не может.
Теорема 22
Коэффициенты всех степеней x в разложении уравнения
(x-1)(x-2)(x-3)...(x-p+1) - xp-1 + 1
делятся на p, если p число простое
В частности,
(-1)p-1*1*2*3*...*(p-1) + 1 ≡ 0 (мод p)
Последнее сравнение приводит к теореме Вильсона
Теорема 23
Если p число простое, то
1*2*3*...*(p-1) + 1 ≡ 0 (мод p)
Теорема 24
Если p число простое, то сравнение
xm + Bxm-1 + Cxm-2 + ... + Lx + M ≡ 0 (мод p)
может быть заменено сравнением степени p-1
A1xp-1 + B1p-2 + C1xp-3 + ... + L1x + M1 ≡ 0 (мод p)
Последний полином есть остаток от деления исходного полинома на xp - x.
Например, дано сравнение
x5 + x2 - 1 ≡ 0 (мод 3)
Его степень можно понизить до 2, разделив его на x3 - x
x2 + x - 1 ≡ 0 (мод 3)
Теорема 25
Если сравнение
xm + Bxm-1 + Cxm-2 + ... + Lx + M ≡ 0 (мод p)
имеет m решений, то в остатке от деления xp - x на
xm + Bxm-1 + Cxm-2 + ... + Lx + M
все коэффициенты делятся на p.
Теорема 26
Если остаток от деления xp - x на xm + Bxm-1 + Cxm-2 + ... + Lx + M
имеет все коэффициенты, кратные p, то сравнение
xm + Bxm-1 + Cxm-2 + ... + Lx + M ≡ 0 (мод p)
имеет m решений.
На основании последних двух теорем всегда можно узнать, имеет ли данное сравнение столько решений, сколько в показателе его степеней
содержится единиц. Для этого коэффициент при высшей степени нужно сделать равным единице, далее делим xp - x
на полученное сравнение. Если остаток имеет все коэффициенты, кратные p, то данное сравнение имеет столько решений, сколько
в показателе его степени имеется единиц. Иначе оно имеет меньше решений.
Например, в сравнении
x3 + x2 + 2x ≡ 0 (мод 5)
мы хотим узнать, имеет ли оно три решения. Делим
x5 - x на
x3 + x2 + 2x
Остаток от деления есть
5x2 + 5x
оба коэффициента в котором делятся на 5, значит оно имеет 3 решения.
...
Глава 7 О сравнениях второй степени с двумя неизвестными
В этой главе мы рассмотрим сравнения вида
x2 + Ay2 + B ≡ 0 (мод p)
Пусть p - число простое, отличное от 2, и q - число, не делящееся на p. пусть имеется сравнение
z2 ≡ q (мод p). Оно может иметь решение в завивсимости от того, какое решение имеет другое сравнение:
Если последнее сравнение равно +1, то сравнение z2 ≡ q (мод p) имеет решение,
при этом q называется квадратичным вычетом числа p, в противном случае сравнение z2 ≡ q (мод p)
не имеет решения, при этом q называется неквадратичным вычетом числа p,
Вместо
пишут для краткости
или (q/p)=1
Теорема 50
Если p число простое и не делит A, то сравнение x2 + Ay2 + B ≡ 0 (мод p)
всегда имеет решение
Из данной теоремы в частности вытекает, что сравнение x2 + y2 + 1 ≡ 0 (мод p) имеет решение
Рассмотрим исходное сравнение при B=0
x2 + Ay2 ≡ 0 (мод p)
Найдем, какие свойства имеет в нем число p при условии, что x и y взаимно просты.
При этом число p может быть делителем квадратичной формы x2 + Ay2.
Мы найдем фомулы, по которым можно найти эти делители, которые будут представлены в виде mz + a,
где z - произвольное число - это составляет теорию линейных делителей квадратичных форм.
Также эти формулы делителей могут быть выражены в виде au2 + 2buv + cv2,
где u и v - взаимно простые числа, и это входит в теорию квадратичных делителей квадратичных форм.
Следующая теорема лежит в основании теории линейных делителей:
Теорема 51
Если сравнению x2 + Ay2 ≡ 0 (мод p) удовлетворяют какие-нибудь взаимно простые числа x, y,
то сравнение u2 + A ≡ 0 (мод p) имеет решение.
Теорема 52
Если A - простое число вида 4n + 3 и p нечетный делитель формы x2 + Ay2,
то (p/A)=1
Теорема 53
Если A простое число вида 4n+1 и p делит x2 + Ay2, то (p/A) = (-1)(p-1)/2,
т.е. (p/A)=1, если p=4m+1, и (p/A)=-1, если p=4m+3.
Теорема 54
Если A простое число вида 4n+1 и p нечетный делитель формы x2 - Ay2,
то (p/A)=1
Теорема 55
Если A простое число вида 4n+3 и p нечетный делитель формы x2 - Ay2,
то (p/A)=(-1)(n-1)/2, т.е. (p/A)=1, если p вида 4m+1, (p/A)=-1, если p вида 4m+3.
С помощью этих теорем можно определить все линейные делители форм вида x2 ± Ay2.
Нечетные делители таких форм определяются или уравнением (p/A)=1, или уравнением (p/A)=-1. Этот знак при единице
зависит от нескольких факторов:
1. какой знак стоит в форме x2 ± Ay2
2. какого вида A - либо 4n+3, либо 4n+1
3. иногда - от того, какого вида p - 4m+3, либо 4m+1
стр.130
Рассмотрим пример: возьмем форму x2 - 7y2 и найдем ее делители.
Число 7 имеет вид 4n+3, поэтому по теореме 55 делители этой формы вида 4m+1 должны удовлетворять уравнению
(p/7)=1, а делители вида 4m+3 должны удовлетворять уравнению (p/7)=-1.
Чтобы найти числа, удовлетворяющие (p/7)=1,
мы должны рассмотреть числа в ряду 1,2,3,...,7, т.е. меньшие или равные числу (7-1)\2.
Т.о. такими числами являются первые три числа - 1,2,3.
Возводим каждое из этих чисел в квадрат и делим на 7, получаем 3 остатка: 1,4,2.
Таким образом, это должны быть числа вида 7n+1, 7n+4, 7n+2. Подставляем 4m+1 в 7n+1 и получаем
4*7z + 7r + 1
Здесь r - одно из чисел 0,1,2,3, которое с 7*(1-1), или 0, сравнимо по модулю 4. Это число есть 0.
Остается 4*7z+1, или 28z+1.
Аналогично поступаем с формулами 7n+4, 7n+2. Из них мы выводим
4*7z+7r+4
4*7z+7r+2
где r - числа из ряда 0,1,2,3, которые с 7(1-4) и 7(1-2) сравнимы по модулю 4. Это числа 3 и 1.
Имеем
4*7z+3*7+4
4*7z+3*7+4
или 28z+25 и 28я+9
Т.о. все числа вида 4m+1, удовлетворяющие уравнению (p/7)=1, и способные быть делителями формы x2-7y2,
определяются формулами
28z+1, 28z+9, 28z+25
Чтобы найти делители вида 4m+3, рассмотрим уравнение (p/7)=-1. В ряду чисел 1,2,3,4,5,6 выкидываем те,
которые равны остаткам от деления 12,22,32 на 7. Выкидываем 1,2,4,
остаются 3,5,6. Перемножаем 7n+3, 7n+5, 7n+7 на 4m+3, получаем
4*7z+7r+3, 4*7z+7r+5, 4*7z+7r+6
Здесь r может быть числом из ряда 0,1,2,3, которые сравнимы с 7(3-3), 7(3-5), 7(3-6) по модулю 4.
Находим
r=0, r=2, r=3
Подставляем
4*7z+7*0+3, 4*7z+7*2+5, 4*7z+7*3+6
Получаем
28z+3, 28z+19, 28z+27
Подведем итоги: для формы x2 - 7y2 найдены шесть формул делителей.
Делители вида 4m+1 определяются формулами
28z+1, 28z+9, 18z+25
Делители вида 4m+3 определяются формулами
28z+3, 28z+19, 18z+27
Теорема 60
Всякий делитель формы x2 - dy2 может быть представлен квадратичной формой,
имеющей определителем d.
Теорема 61
Делитель x2 - Dy2 при D>0 может быть представлен формою
au2 + 2buv - cv2, где ac+b2=D, числа a и c положительные,
не меньшие, чем 2b, и b не превосходит корня квадратного из D/5.
Теорема 62
Делитель x2 + Dy2 при D>0 может быть представлен формою
au2 + 2buv + cv2, где ac-b2=D, числа a и c положительные,
не меньшие, чем 2b, и b не превосходит корня квадратного из D/3.
Рассмотрим пример. Пусть дана форма
x2 + y2
По теореме 62, делители ее будут представляться формами
au2 + 2buv + cv2
причем ac - b2=1, b не превосходит корня из 1/3, что кстати говорит о том, что b=0.
Уравнение ac - b2=1 при b=0 дает ac=1, откуда a=1, c=1. Из чего мы делаем вывод,
что все делители формы x2 + y2 представляются формой u2 + v2
Рассмотрим другой пример. Пусть дана форма
x2 + 2y2
По теореме 62, делители ее будут представляться формами
au2 + 2buv + cv2
причем ac - b2=2, b не превосходит корня из 2/3, что кстати опять же как и в предыдущем примере говорит о том, что b=0.
Уравнение ac - b2=1 при b=0 дает ac=2, откуда a=2, c=1 либо a=1, c=2 . Из чего мы делаем вывод,
что все делители формы x2 + y2 представляются либо формой 2u2 + v2,
либо формой u2 + 2v2, но они тождественны между собой.
Рассмотри третий более сложный пример - x2 - 21y2
По теореме 61, делители этой формы будут представлены формами
au2 + 2buv - cv2
в которых b не больше, чем корень квадратный из 21/5, ac + b2=21
Очевидно, что b может иметь только три значения - 0,1,2. Подставляя b в уравнение ac + b2=21,
и учитывая, что a и c больше нуля и не менее 2b, найдем все значения, которые могут иметь a,b,c в форме
au2 + 2buv - cv2, которая определят делители для x2 - 21y2.
Если b=0, то ac=21, где возможны 4 варианта:
a=1, c=21; a=7, c=3; a=3, c=7; a=21, c=1
Все эти варианты удовлетворяют условию: a>0, c>0, a>2b, c>2b,
Если b=1, то ac=20, где возможны также 4 варианта:
a=5, c=4; a=2, c=10; a=10, c=2; a=4, c=5;
Если b=2, то ac=17, и здесь нет ни одного варианта.
В результате мы имеем 8 форм:
u2 - 21v2,
3u2 - 7v2,
7u2 - 3v2,
21u2 - v2,
2u2 + 2uv - 10v2,
4u2 + 2uv - 5v2,
5u2 + 2uv - 4v2,
10u2 + 2uv - 2v2.
Глава 8 Приложение теории сравнений к разложению чисел на простые множители
При разложени больших и очень больших чисел на множители обычный алгоритм проверки предусматривает деление числа N
на таблицу простых чисел, которые меньше корня из N, что становится неэффективным при возрастании N.
Мы рассмотрим другие алгоритмы и несколько частных случаев, и начнем с того, что рассмотрим числа вида am+1 и am-1
Начнем с чисел вида am - 1
Теорема 66
Если p нечетное число и делит am-1, то p может быть выражено формой wz + 1,
где w - делитель m (включая сюда и 1), z - число взаимно простое с m/w, притом p должно делить aw - 1.
Теорема 67
Если 2n + 1 число простое. то простые нечетные делители a2n+1 - 1 должны быть вида
2(2n+1)z+1 или делить a-1; притом они должны быть делителями формы x2 - ay2
Рассмотрим алгоритм разложения чисел вида am - 1.
Для примера возьмем число 223 - 1, оно равно 8388607. 23 - число простое,
поэтому делители 223 - 1 должны иметь вид 46z+1 и быть в то же время одного из двух видов:
8m + 1 или 8m - 1(Теорема 56). При этом z может быть одного из 4 видов:
4x, 4x+1, 4x+2, 4x+3
Для этих z форма 46z+1 приводится к следующим 4:
184z+1, 184z+47, 184z+93, 184z+139
из которых последние две не дают чисел вида 8m+1 и 8m-1.
Поэтому для делителей числа 8388607 возможны только две формы:
184z+1, 184z+47
Ищем в диапазоне от 1 до корня из 8388607, подставляя в эти две формы числа от 1 до 15.
Среди результатов получаем следующие простые числа:
599, 967, 1151, 1289, 1657, 2393.
Ни одно из них не делит число 8388607, из чего мы заключаем, что оно простое.
Таким же образом Эйлер нашел, что 231 - 1 = 2147483647 есть число простое
Следующий код вычисляет простые числа вида 2n - 1 в диапазоне n=31...100 и находит три простых числа:
Код
def primes(n):
if n==2: return [2]
elif n<2: return []
s=range(3,n+1,2)
mroot = n ** 0.5
half=(n+1)/2-1
i=0
m=3
while m <= mroot:
if s[i]:
j=(m*m-3)/2
s[j]=0
while j < half:
s[j]=0
j+=m
i=i+1
m=2*i+3
return [2]+[x for x in s if x]
def is_prime(n):
_sqrt = int(math.sqrt(n))+1
for p in pp:
if p > _sqrt:
break
if n % p == 0:
return False
return True
pp = primes(1000000)
for p in range(31,100):
if is_prime(p):
n = 2**p - 1
z1 = 0
zz=[]
for i in range(0,4):
z1 = p*8
z2 = (i)*2*p + 1
zz.append(z2)
c=0
zz2=[]
for z in zz:
z3 = (z1 + z) % 8
if z3==1 or z3==7:
zz2.append(z)
f = True
for x in range(0, 1000000):
for z in zz2:
x2 = z1*x + z
if x2 > 1 :
if n % x2 == 0:
f = False
break
if f == False:
break
if f == True:
print 'p=%s n=%s - prime number ! ' % (p, n)
Теперь перейдем к числам вида am + 1
Теорема 70
Все нечетные делители числа 22n + 1 должны быть вида
2*2n*z + 1
Доказательство: Все нечетные делители могут быть представлены в виде 2wz+1, где w есть делитель
2n, который в частном дает число нечетное. Этому условию удовлетворяют только
w=2n, поэтому все нечетные делители должны быть представлены как 2*2n*z + 1
В качестве примера возьмем два числа:
224 + 1 = 65537 и
225 + 1 = 4294967297
Делители первого числа должны быть вида 32z + 1. Берем z=1,2,3,4,5,6,7 и получаем 33,65,97,129,161,193,225.
Из этих чисел только два простых числа - 97 и 193, которые не делят первое число, значит - оно простое.
Для второго числа имеем форму 64z + 1. Здесь z = 1,2,3,...,1023. Среди этих простых чисел имеется простое число 641,
которое делит второе число, значит - оно составное.
Следующий код иллюстрирует данный алгоритм: он проверяет числа Ферма 22n + 1 и показывает,
что начиная с n=5, идут только составные числа:
Код
for p in range(0, 20):
n = 2*2**p
p2 = Decimal(2**2**p+1)
f = True
_sqrt = Decimal.sqrt(p2)
i=1
while True:
z = Decimal(n*i+1)
if z > _sqrt:
break
if p2.remainder_near(z) == 0:
f = False
break
i += 1
if f == True:
print 'n=%s p=%s - prime number ! ' % (str(p), str(p2))
else:
print 'n=%s - not prime number ...... ' % (p)
Теперь переходим к числам произвольной формы. Покажем, как для любого числа может быть найдено множество форм вида
x2 ± ay2 с незначительными величинами a, с помощью которых можно выражать кратные этого числа,
а потом и делители.
Каким бы ни было проверяемое число, его всегда можно представить в виде A = x2 + ay2
Из найденных форм наиболее выгодны будут те, у которых a будет минимально. Такие формы могут быть найдены на основании
следующей теоремы:
Теорема 71
Если d0, d1, d2, ... есть ряд чисел, в котором каждый член dn+1
по двум предыдущим определяется уравнением
если первое число в этом ряду есть единица, второе - (A - (E*√A)2),
то всякая из форм x2 - Dy2,
где D равно (-1)α+β+γ+...dαdβdγ... ,
способна выражать A или кратное A.
В качестве примера возьмем число 8520191.
На основании теоремы 71 мы будем искать делители этого числа.
Для этого мы определим числа d0, d1, d2, ... по уравнениям:
Функция E - это модуль числа.
Из этиз уравнений находим:
d0=1, d1=5467, d2=370, d3=4319,
d4=1313, d5=2630, d6=3185, d7=203,
d8=1169, d9=4523, d10=242, d11=1855,
d12=593, d13=2854, d14=2965, d15=371, d16=1210.
Разложим эти числа на простые множители:
d0=1, d17*11*71, d2=2*5*37, d3=7*617,
d4=13*101, d52*5*263, d6=2*72*13, d7=7*29,
d8=7*167, d94523, d10=2*112, d11=5*7*53,
d12=593, d132*1427, d14=5*593, d15=7*53, d16=2*5*112.
Среди этих чисел можно выделить числа с индексами 6, 10, 16, как числа, в разложении которых присутствуют квадраты,
которые могут быть сокращены, после чего данные числа оказываются минимальными. Между этими тремя числами также можно составить
различные комбинации. Для формы делителей, имеющей вид x2 - ay2, коэффициент a может принимать
следующие минимальные значения:
a = (-1)6d6 = 5*72*13
a = (-1)10d10 = 2*112
a = (-1)16d16 = 2*5*112
a = (-1)10+16d10d16 = 22*5*114
a = (-1)6+10+16d6d10d16 = 52*72*13*22*114
a = (-1)2+16d2d16 = 22*52*37*112
a = (-1)4+6+10+16d4d6d10d16 = 132*101*52*72*22*114
Исключая все множители, составляющие точные квадраты, находим для a следующие величины:
5*13, 2, 2*5, 5, 13, 37, 101
Т.о. делители числа 8520191 должны иметь вид делителей каждой из следующих форм:
x2 - 5*13y2
x2 - 2y2
x2 - 2*5y2
x2 - 5*y2
x2 - 13y2
x2 - 37y2
x2 - 101y2
Далее с помощью алгоритма линейных делителей находятся простые делители, как это делается в теореме 55,
после чего с их помощью проверяем заданное число.
Следующий код иллюстрирует данный алгоритм:
Код
def get_del(a):
z21 = []
z22 = []
z23 = []
z4 = []
z31 = []
z32 = []
z3 = 0
for i in range(1, ((a-1)/2)+1):
z21.append(i)
for i in z21:
z22.append(i**2 % a)
for i in z22:
z23.append(a*(1-i) % 4)
z3 = 4*a
c=0
for i in z22:
z4.append(a*z23[c]+i)
c += 1
if a % 4 == 3:
for i in range(1, a):
if i not in z22:
z31.append(i)
for i in z31:
z32.append(a*(3-i) % 4)
c=0
for i in z32:
z0 = a*i+z31[c]
if z0 not in z4:
z4.append(z0)
c += 1
return z3, sorted(list(set(z4)))
def prime_factors_dic(n):
f=dict()
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
if i not in f:
f[i] = 1
else:
f[i] += 1
if n > 1:
if n not in f:
f[n] = 1
else:
f[n] += 1
return f
n = 8520191
d=[]
d.append(1)
d0=1
a,b = divmod(math.sqrt(n),1)
d1 = n - int(a)**2
d.append(d1)
count=1
for i in range(1, 20):
x1 = ((math.sqrt(n-d1*d0) + math.sqrt(n))/d1)
a, b = divmod(x1,1)
x2 = d1 * a - math.sqrt(n-d1*d0)
d2 = (x2**2 - n)/d1
if int(d2 * (-1)) not in d:
d.append(int(d2*(-1)))
count += 1
d0 = int(d1)
d1 = int(d2)*(-1)
ddd=dict()
for dd in d:
ddd[dd] = prime_factors_dic(dd)
d2=dict()
count=0
for dd in d:
d3 = ddd[dd]
for k,v in d3.items():
if v > 1:
d2[dd]=d3
count += 1
_pp=[]
for k,v in d2.items():
_p = 1
for k2,v2 in v.items():
if v2 < 2:
_p *= k2
if _p > 1:
_pp.append(_p)
d_prime=[]
for p1 in _pp:
z1, z2 = get_del(p1)
if z1 > 0:
for z in z2:
for i in range(0,10):
p2 = z1*i + z
if p2 % 2 != 0 and p2 > 1 and p2 not in d_prime:
d_prime.append(p2)
_isprime = True
for dp in d_prime:
if n % dp == 0:
_isprime = False
break
if _isprime == True :
print '%s is prime !' % n
|
|
|
|