Диофантово уравнение от двух переменных второй степени

Критерии разрешимости и алгоритмы построения решений диофантовых уравнений второй степени от двух переменных Текст научной статьи по специальности « Математика»

Аннотация научной статьи по математике, автор научной работы — Камнев В.В.

На основе языка топокарт Конвея построен алгоритм, проверяющий разрешимость произвольного диофантова уравнения вида ax2 + hxy + by2 = m. В случае конечного числа решений алгоритм дает общее решение. Представлен алгоритм, устанавливающий эквивалентность квадратичных форм из левой части уравнения. С помощью топокарт доказаны классические результаты о критерии разрешимости уравнений вида х2 — Ny2 = —1 и об общем виде решения уравнения вида х2 — Ny2 = ±1. Доказана гипотеза Капланского: если простое число р может быть записано в виде суммы двух квадратов вида р = а2 + (2b’)2, то квадратичная форма х2 — ру2 представляет а и 4Ъ. Ранее это более сложно было доказано Мэтьюсом. Получены критерии разрешимости уравнений вида х2 — Ny2 = m, —6 Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Камнев В.В.

Solvability criteria and algorithms of solution constructing for quadratic diophantine

By means of Conway’s topograph theory an algorithm, testing the solvability in integers of the equationax2 + hxy + by2 = m, is constructed. In the case of finite number of solutions this algorithm outputs the general solution. An algorithm, checking whether the quadratic forms in the left side of the equation above are equivalent, is obtained. With the help of the topograph theory classical results concerning the solvability of equations of the form x2 Ny2 = -1 in integers and the structure of the general solution of equations of the form x2 Ny2 = ±1 are proved. The Kaplansky conjecture is proved: if the prime number could be written as a sum of two squares in the form p = a2 + (2b)2, then equations x2 -py2 = a,x2 -py2 = 4b are solvable in integers. It was proved in a more complicated way earlier by Matthews. Solvability in integers criteria for equations x2 Ny2 = m, -6 на тему «Критерии разрешимости и алгоритмы построения решений диофантовых уравнений второй степени от двух переменных»

Вестн. Ом. ун-та. 2015. № 3. С. 7-12.

УДК 511.5 В.В. Камнев

КРИТЕРИИ РАЗРЕШИМОСТИ И АЛГОРИТМЫ ПОСТРОЕНИЯ РЕШЕНИЙ ДИОФАНТОВЫХ УРАВНЕНИЙ ВТОРОЙ СТЕПЕНИ ОТ ДВУХ ПЕРЕМЕННЫХ

На основе языка топокарт Конвея построен алгоритм, проверяющий разрешимость произвольного диофантова уравнения вида ax* 1 2 * 4 + hxy + by2 = m.

В случае конечного числа решений алгоритм дает общее решение. Представлен алгоритм, устанавливающий эквивалентность квадратичных форм из левой части уравнения. С помощью топокарт доказаны классические результаты о критерии разрешимости уравнений вида х2 — Ny2 = —1 и об общем виде решения уравнения вида х2 — Ny2 = ±1. Доказана гипотеза Капланского: если простое число р может быть записано в виде суммы двух квадратов вида р = а2 + (2b’)2, то квадратичная форма х2 — ру2 представляет а и 4Ъ. Ранее это более сложно было доказано Мэтьюсом. Получены критерии разрешимости уравнений вида х2 — Ny2 = m, —6

1 ,N^k2, называют обобщенными уравнениями Пелля. Если N — полный квадрат, то соответствующие уравнения не представляют интереса, так как их решение сводится к решению системы линейных уравнений. Отметим, что если уравнение Пелля (в том числе обобщенное) разрешимо, то оно имеет бесконечное множество решений.

Критерии разрешимости и общий вид решения уравнений х2 — Ny2 =

±1 хорошо известны (см., например, [1; 2]). Уравнение Пелля разрешимо всегда. Уравнение х2 — Ny2 = —1 — не всегда. Для существования целочисленных решений необходимо, чтобы число —1 было квадратичным вычетом по модулю N. Это условие равносильно тому, что число N не делится на 4 и не имеет простых делителей вида 4к + 3 (см. [3]). Если N — простое число, это необходимое условие (сводящееся в этом случае к тому, что N = 4к + 1) является также достаточным (см. [3]). Но для произвольного N данное условие не является достаточным. Например, уравнение х2 — 34у2 = —1 не имеет решений в целых числах, при этом число N = 34 = 2 • 17 не делится на

4 и не имеет простых делителей вида 4к + 3.

Естественным языком для формулировки критериев разрешимости и получения решения уравнений Пелля является язык цепных дробей. В силу теоремы Лагранжа о квадратичных иррациональностях разложение числа V

N в цепную дробь периодично. Уравнение х2 — Ny2 = —1 разрешимо тогда и только тогда, когда длина этого периода нечетна. Попытки отыскания критериев, формулируемых через арифметические свойства числа N (через вид разложения на простые множители и т. п.), приводят к громоздким и искусственным условиям. Например, Мэтьюс в [4] сформулировал следующий критерий: уравнение х2 — Ny2 =—1 разрешимо тогда и только тогда, когда N = a2+b2 и существуют натуральные числа А, В, С такие, что А2 + В2 = С2, НОД(А,В) = 1 и |аА — ЬВ| = 1. Моллин [5] установил следующий критерий. Пусть N = 1,2 (mod 4) не является полным квадратом. Тогда

уравнение х2 — Ny2 = —1 разрешимо в целых числах в том и только том случае, если х0 = —1 (mod 2N), где х0,у0 — это примитивное решение классического уравнения х2 — Ny2 = 1.

Моллин [6] формулирует критерий разрешимости уравнений х2 — Ny2 = ±2 в терминах цепных дробей. Нами получен более простой критерий разрешимости данных уравнений. Он тоже связан с процедурой разложения числа V

N в цепную дробь, но позволяет установить разрешимость уже по виду разложения без дополнительных вычислений. Также мы приводим общий вид их решений. Уравнения х2 — Ny2 = ±2 также исследовал Чунганг в [7]. Им получены достаточные условия разрешимости данных уравнений в терминах теории графов, проверка которых технически сложна.

Существующие утверждения, касающиеся разрешимости общих уравнений Пелля х2 — Ny2 = т, |ш| > 2, имеют более частный характер. Например, Каплан [8] приводит следующее утверждение. Если уравнение x2—Ny2 = — 1 разрешимо, то уравнение х2 — Ny2 = —4 разрешимо во взаимнопростых числах тогда и только тогда, когда 1

= 1, то f(v) = f(x,y) = f(kx,ky) = а(кх)2 +

= к2 (ax’2 + hx y’ + by’2^ = k2f(x’,y’).

Таким образом, чтобы изучить значения, принимаемые квадратичной формой, достаточно рассмотреть ее значения на примитивных векторах.

Любой элемент базиса является примитивным вектором. Любой примитивный вектор ex = (x1,y1) дополняется до базиса вектором е2 = (х2,у2), более того, он входит в бесконечное число базисов (е1,е2 (к)), где е2(к) = (х2+кх1,у2+ку1).

Нестрогим вектором будем называть пару .

Определение 2. Нестрогий базис — это множество <(б!, е2), (—е1, е2), (ег, -е2), (

е1, -е2)>, где (е1,е2) — базис.

Критерии разрешимости и алгоритмы построения решений диофантовых уравнений.

Определение 3. Супербазис — это тройка векторов (е1, е2,е3) такая, что (е1,е2) — базис и е1+ е2 + ез = 0.

Определение 4. Нестрогий супербазис -это множество <(±е1,±е2,±е3)>такое, что при некоторой комбинации знаков векторы е1,е2,ез образуют супербазис.

Квадратичная форма принимает одно и то же значение на векторах v и —v. По этой причине будем рассматривать значения квадратичной формы на нестрогих векторах и далее под понятиями «вектор», «базис», «супербазис» будем подразумевать соответствующие нестрогие понятия. Примем также соглашение, что при записи нестрого вектора v = аег + Ре2 коэффициент при ех будет неотрицательный: а >0,р Е2.

Утверждение 1. Любой базис (е1,е2) содержится ровно в двух супербазисах: (е1( е2, е1 + е2) и (е1( е2, е1 — е2). Любой супербазис (е1,е2,е3) содержит ровно три базиса: (ei,e2), (е1,е3), (е2,е3).

Отсюда возникает идея представления базисов и супербазисов в виде графа. Ребру соответствует базис, вершине — супербазис. Две вершины ребра соответствуют двум супербазисам, в которых содержится базис, соответствующий данному ребру. Из каждой вершины выходят три ребра, что соответствует трем базисам, содержащимся в супербазисе, соответствующим данной вершине.

Пусть вектор и содержится в базисе (и, v), который в свою очередь содержится в супербазисе (и, v,u + v), тогда и будет содержаться только в одном из оставшихся базисов, содержащихся в супербазисе (u,v,u + v), а именно в (u,u + v). Таким образом, ребра и вершины, содержащие и, образуют выпуклую ломаную. Область, ограниченную этой ломаной, отождествим с вектором и.

Определение 5. Топокарта квадратичной формы от двух переменных — это граф, каждая вершина которого соответствует некоторому супербазису, каждое ребро — некоторому базису, а каждая область — примитивному вектору.

Легче понять, что такое топокарта, если строить ее конструктивно, начиная с произвольного базиса (е1,е2) и достраивая базисы.

Областям на топокарте соответствуют примитивные векторы (нестрогие). Любые два вектора и и v, граничащие по ребру, образуют базис (u,v). Любые три вектора, сходящиеся в одной точке, образуют супербазис. Векторы являются примитивными, так как базисы содержат только примитивные вектораы Области бесконечны, так как каждый примитивный вектор содержится в бесконечном числе базисов.

Замечание 1. В качестве начального базиса (е3, е2) будем обыкновенно использовать базис ((1,0), (0,1)). Области топокарты будем помечать значениями квадратичной формы на векторах, соответствующих этой области.

Утверждение 2. Любой примитивный вектор и представлен на топокарте, т. е. ему соответствует некоторая область.

Доказательство. Утверждение эквивалентно тому, что всякий базис (u,v) = (х1е1 + + У1е2,х2е1 + У2е2) = ((*i,yi), (*2,У2)) присутствует на топокарте, так как примитивный вектор входит в некоторый базис. Покажем, что можно осуществить спуск к начальному базису (е3, е2) путем перехода от текущего базиса к следующему соседнему базису. Этим будет доказано, что (и, v) представлен на топокарте.

матрицы у J, ее определитель равен

Переход к одному из четырех соседних базисов

((х1,у1),(х2 +х1,у2+у1)) представляет собой следующие преобразова-

ния матрицы \х2 У2У

/*1 — х2 У1 —УА ( Хх У!

V х2 у2 )’\х2 — Xi у2 — У1

Пусть а > с,а = кс + гг ,г1 0,В >0 и на двух векторах, дополняющих его до супербазисов, форма принимает значения C и D. Пусть h = С — А — В = А + В — D >0. Тогда А + С — В > >0 и С + В — А > 0.

Утверждение 6 (об убывании). Пусть на некотором базисе форма принимает неположительные значения А 0. Тогда В — A — D > >0 и А — D — В >0.

Алгоритм построения решений дио-фантова уравнения ах2 + hxy + by2 = т и его следствия

Чтобы изучить значения, принимаемые квадратичной формой, нужно рассмотреть значения, которые она принимает на векторах топокарты, при этом будут рассмотрены все примитивные значения квадратичной формы. Все остальные значения квадратичной формы получаются умножением примитивных значений на всевозможные квадраты.

Замечание 3. Чтобы определить разрешимость и найти решения уравнения ах2 + + hxy + by2 = т, нужно проверить, присутствуют ли на топокарте области со значениями т и со значениями т/к2, где к2 — это всевозможные квадраты, делящие т. В первом случае решением уравнения будут примитивные векторы (х,у), соответствующие области т, во втором случае — векторы к(х,у), где (х,у) — это вектор, соответствующий области т/к2. Таким образом, основной алгоритм надо запустить для всевозможных М = т/к2, где к2 — это всевозможные квадраты, начиная с единицы, делящие т.

1. Находим множество ребер ‘S1, удовле-

творяющее следующим свойствам: 1) для ребер из выполнено утверждение 4 о возрастании; 2) — это минимальный набор ребер,

для которых в направлении возрастания будут строиться деревья, содержащие все положительные значения формы. Далее будем называть это множество начальным множеством базисов формы /. Способ построения начального множества зависит от вида формы и будет описан после алгоритма. Мощность |®г| = п, п>1. Проверяем, принимает ли форма значение М на элементах начального множества. Если да, то записываем соответствующие векторы (в соответствии с замечанием перед алгоритмом) в решение. Уточнение: в алгоритме мы работаем со значениями формы на областях, но при этом отслеживаем, на каких векторах они принимаются. Если все значения формы на элементах ‘S1 больше или равны М, то КОНЕЦ. Переходим к шагу 2 (счетчик(высота деревьев)! = 1).

2. На ребрах в направлении возрастания выходят два ребра. Рассматриваем значения, принимаемые формой на областях, которые они ограничивают (эти значения по-

Критерии разрешимости и алгоритмы построения решений диофантовых уравнений.

лучаем по правилу арифметической прогрессии). Назовем это множество значений Ct ,|С;| = |®;|. По утверждению 5 о возрастании, каждое из значений С из Ct строго больше значений A и B, по которым оно было построено. Проверяем, содержится ли М в С;. Если да, записываем соответствующие решения. Если все значения из Ct больше или равны М, то КОНЕЦ. Переходим к шагу 3.

3. На тех вершинах, для которых С М. Вершины, для которых С > М, не рассматриваются, так как по утверждению 6 все полученные по ним новые значения будут строго больше С. Переходим к шагу 2.

Алгоритм конечен, так как на каждом проходе алгоритма рассматриваются все большие значения формы, и алгоритм завершится, когда все полученные значения из Ct будут больше или равны М. В результате работы алгоритма будет получен некоторый набор решений. Следует помнить, что решения — это нестрогие векторы, т. е. каждое решение и представляет собой два решения ±и. Если рассматриваемое уравнение имеет конечное число решений, то алгоритм выдаст все решения. Если решений бесконечно много, то будет получен некоторый набор решений. Конечность решений однозначно определяется по виду квадратичной формы. Все это будет рассмотрено ниже.

Если М 0 и М 0 -подходящая дробь с номером s,Q_x = 1/0.

Пусть N — не полный квадрат.

1. Уравнение х2 — Ny2 = 1 разрешимо для любого N.

1.1. Если к четно, тогда х, у > 0 являются его решением в том и только том случае, если

1.2. Если к нечетно, то х,у > 0 являются решением тогда и только тогда, когда

2. Уравнение х2 — Ny2 = —1 разрешимо в том и только том случае, когда к нечетно.

2.1. Числа х,у > 0 являются решением тогда и только тогда, когда к нечетно и

Как простое следствие из доказательства теоремы 1 можно привести доказательство гипотезы Ирвинга Капланского: если простое число р может быть записано в виде суммы двух квадратов следующим образом: р = а2 + + (2Ь)2, то квадратичная форма х2—ру2 представляет а и 4Ь.

Для этого устанавливается следующее утверждение из [12].

Утверждение 8. Для любого натурального числа N, не равного точному квадрату, для которого уравнение х2 — Ny2 =—1 разрешимо, существуют натуральные числа а и b такие, что N = а2 + Ь2. Причем разрешимы уравнения х2 — Ny2 = ±а,х2 — Ny2 = ±2Ь.

Справедливость гипотезы Капланского следует из утверждения 8 и из того, что х2 — ру2 = —1 разрешимо тогда и только тогда, когда р = 4к + 1, что равносильно р = а2 + (2Ь)2. При этом разложение р = а2 + (2Ь)2 единственно.

Следующая теорема получена независимо от [6].

Теорема 2. Пусть [?„,( q1,q2, — ,qm,—, 4z,4i,Чк)] — разложение V

N в непрерывную дробь, (qi,q2,—,4k) — период непрерывной

дроби. Обозначим Qs = [q0,q1,^,qs],s > 0 -подходящая дробь с номером s,Q_1 = 1/0.

Пусть N >2, N — натуральное число, не равное точному квадрату, тогда:

1. Уравнение х2 — Ny2 = 2 разрешимо тогда и только тогда, когда k = 4t,t >1, и Чт = Чо или qm = q0 — 1.

1.1. Числа х,у > 0 являются его решением тогда и только тогда, когда — =

2. Уравнение х2 — Ny2 = — 2 разрешимо тогда и только тогда, когда к = 4t + 2, t >0, и Чт = Чо или qm = q0 — 1.

2.1. Числа х,у > 0 являются его решением тогда и только тогда, когда — = Q(2t-i)m-i-t> 1.

Заметим, что уравнение х2 — 2у2 = ±2 разрешимо. Это единственный случай, когда для данного N разрешимы оба уравнения х2 — Ny2 = ±2, а также единственный случай, когда уравнения разрешимы для нечетной длины периода разложения VW в непрерывную дробь, V2 = [1, (2)].

Приведем результаты, касающиеся решения уравнений х2 — Ny2 = т для некоторых т в терминах цепных дробей

Теорема 3. Пусть = [чо,(Ч1,Ч2,-,Чк)] -разложение в непрерывную дробь, (q1,q2, — ,Чк) — период непрерывной дроби.

Пусть —6 0 разрешимо тогда и только тогда, когда существует i = 2s такой, что qt = t или qt = s.

[1] Бухштаб A. A. Теория чисел. М. : Просвещение, 1966. 384 с.

[2] Дэвенпорт Г. Высшая арифметика. Введение в теорию чисел. М. : Наука, 1965. 176 с.

[3] Венков Б. А. Элементарная теория чисел. М. : ОНТИ, 1937. 218 с.

[4] Matthews K. Primitive Pythagorean triples and the

negative Pell equation. URL: http://www.

[5] Mollin R., Shrinivasan A. Central Norms: applications to Pell’s equation // Int. J. of Algebra. 2010. Vol. 4. № 19. P. 919-922.

[6] Mollin R. Lagrange, central norms, and quadratic Diophantine equations // Int. J. Math. аnd Math. Sci. 2005. Vol. 7. P. 1039-1047.

[7] Chungang Ji. Diophantine equations x2 — Dy2 = = —1, ±2, odd graphs, and their applications // J. Number Theory. 2005. Vol. 114. № 1. P. 18-36.

[8] Kaplan P., Williams K. S. Pell’s equations x2 — — Dy2 = —1, —4 and continued fractions // J. Number Theory. 1986. Vol. 23. № 2. P. 169-182.

[9] Mollin R. Generalized Lagrange Criteria for Certain Quadratic Diophantine equations // New York J. of Math. 2005. Vol. 11. P. 539-545.

[10] Mollin R. Quadratic Diophantine Equations x2 — Dy2 = c2 // Irish Math. Soc. Bulletin. 2006. Vol. 58. P. 55-68.

[11] Конвей Дж. Квадратичные формы, данные нам в ощущениях. М. : МЦНМО, 2008.

Линейное диофантово уравнение и 4 способа его решения

Разделы: Математика

Првило 1. Если с не делится на d, то уравнение ах + ву = с не имеет решений в целых числах. Н.О.Д.(а,в) = d.

Правило 2. Чтобы найти решение уравнения ах + ву = с при взаимно-простых а и в, нужно сначала найти решение (Хо ; уо) уравнения ах + ву = 1; числа СХо , Суо составляют решение уравнения ах + ву = с.

Решить в целых числах (х,у) уравнение

Первый способ. Нахождение частного решения методом подбора и запись общего решения.

Знаем, что если Н.О.Д.(а;в) =1, т.е. а и в взаимно-простые числа, то уравнение (1)

имеет решение в целых числах х и у. Н.О.Д.(5;8) =1. Методом подбора находим частное решение: Хо = 7; уо =2.

Итак, пара чисел (7;2) — частное решение уравнения (1).

Значит, выполняется равенство: 5 x 7 – 8 x 2 = 19 … (2)

Вопрос: Как имея одно решение записать все остальные решения?

Вычтем из уравнения (1) равенство (2) и получим: 5(х -7) – 8(у — 2) =0.

Отсюда х – 7 = . Из полученного равенства видно, что число (х – 7) будет целым тогда и только тогда, когда (у – 2) делится на 5, т.е. у – 2 = 5n, где n какое-нибудь целое число. Итак, у = 2 + 5n, х = 7 + 8n, где n Z.

Тем самым все целые решения исходного уравнения можно записать в таком виде:

n Z.

Второй способ. Решение уравнения относительно одного неизвестного.

Решаем это уравнение относительно того из неизвестных, при котором наименьший (по модулю) коэффициент. 5х — 8у = 19 х = .

Остатки при делении на 5: 0,1,2,3,4. Подставим вместо у эти числа.

Если у = 0, то х = =.

Если у =1, то х = =.

Если у = 2, то х = = = 7 Z.

Если у =3, то х = =.

Если у = 4 то х = =.

Итак, частным решением является пара (7;2).

Тогда общее решение: n Z.

Третий способ. Универсальный способ поиска частного решения.

Для решения применим алгоритм Евклида. Мы знаем, что для любых двух натуральных чисел а, в, таких, что Н.О.Д.(а,в) = 1 существуют целые числа х,у такие, что ах + ву = 1.

1. Сначала решим уравнение 5m – 8n = 1 используя алгоритм Евклида.

2. Затем найдем частное решение уравнения (1)по правилу 2.

3. Запишем общее решение данного уравнения (1).

1. Найдем представление: 1 = 5m – 8n. Для этого используем алгоритм Евклида.

8 = 5 1 + 3.

5 = 3

3 = 2 .

Из этого равенства выразим 1. 1 = 3 — 2 = 3 – (5 — 3 ) =

= 3 — 5 = 3 = (8 — 5 — 5 82 -5

= 5(-2). Итак, m = -3, n = -2.

2. Частное решение уравнения (1): Хо = 19m; уо =19n.

Отсюда получим: Хо =19; уо =19 .

Пара (-57; -38)- частное решение (1).

3. Общее решение уравнения (1): n Z.

Четвертый способ. Геометрический.

1. Решим уравнение 5х – 8у = 1 геометрически.

2. Запишем частное решение уравнения (1).

3. Запишем общее решение данного уравнения (1).

Отложим на окружности последовательно друг за другом равные дуги, составляющие

-ю часть полной окружности. За 8 шагов получим все вершины правильного вписанного в окружность 8-угольника. При этом сделаем 5 полных оборотов.

На 5 – ом шаге получили вершину, соседнюю с начальной, при этом сделали 3 полных оборота и еще прошли — ю часть окружности, так что х = у + .

Итак, Хо = 5, уо =3 является частным решением уравнения 5х – 8у = 1.

2. Частное решение уравнения (1): Хо = 19 уо =19

3. Общее решение уравнения (1): n Z.

Общее решение диофантового линейного уравнения с многими переменными

В своей предыдущей статье упоминалось об общем решении диофантового уравнения.

На сегодня существует несколько алгоритмов нахождения общего решения.

В этой статье я расскажу, как бы я решал поставленную задачу.

Если для кого то нижеописанный алгоритм известен и банален, просьба отнестись к автору снисходительнее.

Для решения нам понадобится только явная формула решения диофантового уравнения с двумя переменными.

— функция Эйлера
Решение состоит из двух этапов.

1 этап. Частные решения
Разделим исходное диофантовое уравнение

Решая это уравнение, получаем что

равен какому то числу и это число является правой частью выражения

Решим это новое уравнение получим

В конечном итоге мы получим цепочку частных решений исходного диофантового уравнения.
Давайте рассмотрим сразу пример:

И осталось последнее уравнение

Так как оно последнее в наших вычислениях, то два корня и будут являться

Мы получили цепочку частных решений заданного диофантового уравнения

Совпадает с правой частью исходного уравнения?
Да!
Следовательно наши расчеты верны. Под это дело был сделан калькулятор Частное решение диофантового уравнения с несколькими неизвестными.

Теперь приступим ко второму этапу.

2 этап. Общая матрица

Когда я писал что у нас есть частное решение

я умышленно не писал вот так

так как приняв k за ноль мы и получим то что искали.

Но для понимания нам полная форма понадобится.

Подставив в исходное уравнение полную форму частных решений, мы увидим следующее

— какое то целое число.

После преобразований мы получим что в конечном итоге наше уравнение можем записать как

Ищем частное решение если например

Почему именно 3?

Не утомляя Вас, дадим частные решения

Дальше идем как по накатанной.



В конечном итоге мы получили следующие частные решения

Построим из них матрицу

И эта матрица и является общим решением исходного диофантового уравнения
Проверить достаточно легко воспользовавшись калькулятором умножения вектора на матрицу

По итогу был создан калькулятор Общее решение линейного диофантового неоднородного уравнения которым могут воспользоваться все желающие.

Еще один пример

Надеюсь, из этой статьи Вы узнали что то новое.


источники:

http://urok.1sept.ru/articles/501260

http://habr.com/ru/post/521526/