Наибольший общий делитель — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Расширенный алгоритм Евклида)
(Стандартный алгоритм Евклида)
Строка 22: Строка 22:
 
===Стандартный алгоритм Евклида===
 
===Стандартный алгоритм Евклида===
  
Пусть <math>a</math> и <math>b</math> — целые числа, не равные одновременно нулю, и последовательность чисел
+
Пусть <tex>a</tex> и <tex>b</tex> — целые числа, не равные одновременно нулю, и последовательность чисел
: <math> a,\, b,\,r_1 > r_2 > r_3 > r_4 > \cdots >r_n</math>
+
: <tex> a,\, b,\,r_1 > r_2 > r_3 > r_4 > \cdots >r_n</tex>
определена тем, что каждое <math>r_k</math> — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть
+
определена тем, что каждое <tex>r_k</tex> — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть
: <math>a = bq_0 + r_1</math>
+
: <tex>a = bq_0 + r_1</tex>
: <math>b = r_1q_1 + r_2</math>
+
: <tex>b = r_1q_1 + r_2</tex>
: <math>r_1 = r_2q_2 + r_3</math>
+
: <tex>r_1 = r_2q_2 + r_3</tex>
: <math>\cdots</math>
+
: <tex>\cdots</tex>
: <math>r_{k-2} = r_{k-1} q_{k-1} + r_k</math>
+
: <tex>r_{k-2} = r_{k-1} q_{k-1} + r_k</tex>
: <math>\cdots</math>
+
: <tex>\cdots</tex>
: <math>r_{n-1} = r_n q_n</math>
+
: <tex>r_{n-1} = r_n q_n</tex>
  
Тогда НОД(''a'',''b''), наибольший общий делитель <math>a</math> и <math>b</math>, равен
+
Тогда НОД(''a'',''b''), наибольший общий делитель <tex>a</tex> и <tex>b</tex>, равен
<math>r_n</math>, последнему ненулевому члену этой последовательности.
+
<tex>r_n</tex>, последнему ненулевому члену этой последовательности.
  
'''Существование''' таких <math>r_1, r_2, ...</math>, то есть возможность деления с остатком <math>m</math> на <math>n</math> для любого целого <math>m</math> и целого <math>n\ne 0</math>, доказывается индукцией по ''m''.
+
'''Существование''' таких <tex>r_1, r_2, ...</tex>, то есть возможность деления с остатком <tex>m</tex> на <tex>n</tex> для любого целого <tex>m</tex> и целого <tex>n\ne 0</tex>, доказывается индукцией по ''m''.
  
 
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений:
 
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений:
* Пусть <math>a = bq + r</math>, тогда <math>\gcd (a,b) = \gcd (b,r).</math>
+
* Пусть <tex>a = bq + r</tex>, тогда <tex>\gcd (a,b) = \gcd (b,r).</tex>
 
{{Hider|
 
{{Hider|
 
   title = '''Доказательство'''|
 
   title = '''Доказательство'''|
Строка 46: Строка 46:
 
   content-style = text-align: left; |
 
   content-style = text-align: left; |
 
   content =
 
   content =
# Пусть k — любой общий делитель чисел a и b, не обязательно максимальный, тогда <math> a = t_1 * k </math> ; <math> b = t_2 * k; </math> где <math> t_1 </math> и <math> t_2 </math> — целые числа из определения.
+
# Пусть k — любой общий делитель чисел a и b, не обязательно максимальный, тогда <tex> a = t_1 * k </tex> ; <tex> b = t_2 * k; </tex> где <tex> t_1 </tex> и <tex> t_2 </tex> — целые числа из определения.
# Тогда k также общий делитель чисел b и r, так как b делится на k по определению, а <math>r = a - bq = (t_1 - t_2*q)*k </math> (выражение в скобках есть целое число, следовательно, k делит r без остатка)
+
# Тогда k также общий делитель чисел b и r, так как b делится на k по определению, а <tex>r = a - bq = (t_1 - t_2*q)*k </tex> (выражение в скобках есть целое число, следовательно, k делит r без остатка)
 
# Обратное также верно и доказывается аналогично 2) - любой делитель b и r так же является делителем a и b.
 
# Обратное также верно и доказывается аналогично 2) - любой делитель b и r так же является делителем a и b.
 
# Следовательно, все общие делители пар чисел a,b и b,r совпадают. Другими словами, нет общего делителя у чисел a,b, который не был бы также делителем b,r, и наоборот.
 
# Следовательно, все общие делители пар чисел a,b и b,r совпадают. Другими словами, нет общего делителя у чисел a,b, который не был бы также делителем b,r, и наоборот.
 
# В частности, максимальный делитель остается тем же самым. Что и требовалось доказать.
 
# В частности, максимальный делитель остается тем же самым. Что и требовалось доказать.
 
}}
 
}}
* <math>\gcd (0,r) = r</math> для любого ненулевого <math>r.</math>
+
* <tex>\gcd (0,r) = r</tex> для любого ненулевого <tex>r.</tex>
  
Проще сформулировать алгоритм Евклида так: если даны натуральные числа <math>a</math> и <math>b</math> и, пока получается положительное число, по очереди вычитать из большего меньшее, то в результате получится НОД.
+
Проще сформулировать алгоритм Евклида так: если даны натуральные числа <tex>a</tex> и <tex>b</tex> и, пока получается положительное число, по очереди вычитать из большего меньшее, то в результате получится НОД.
  
 
===Расширенный алгоритм Евклида===
 
===Расширенный алгоритм Евклида===

Версия 08:44, 29 сентября 2010

Эта статья находится в разработке!

Наибольший общий делитель как максимальное число, делящее два данных числа

Определение:
Наибольшим общим делителем (НОД) для двух целых чисел m и n называется наибольший из их общих делителей.

Пример: для чисел 70 и 105 наибольший общий делитель равен 35.

Наибольший общий делитель существует и однозначно определён, если хотя бы одно из чисел m или n не ноль.

Возможные обозначения наибольшего общего делителя чисел m и n:

  • НОД(m, n)
  • (m, n)
  • gcd(m, n) (от англ. Greatest Common Divisor)

Понятие наибольшего общего делителя естественным образом обобщается на наборы из более чем двух целых чисел.

Алгоритм Евклида

Стандартный алгоритм Евклида

Пусть [math]a[/math] и [math]b[/math] — целые числа, не равные одновременно нулю, и последовательность чисел

[math] a,\, b,\,r_1 \gt r_2 \gt r_3 \gt r_4 \gt \cdots \gt r_n[/math]

определена тем, что каждое [math]r_k[/math] — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть

[math]a = bq_0 + r_1[/math]
[math]b = r_1q_1 + r_2[/math]
[math]r_1 = r_2q_2 + r_3[/math]
[math]\cdots[/math]
[math]r_{k-2} = r_{k-1} q_{k-1} + r_k[/math]
[math]\cdots[/math]
[math]r_{n-1} = r_n q_n[/math]

Тогда НОД(a,b), наибольший общий делитель [math]a[/math] и [math]b[/math], равен [math]r_n[/math], последнему ненулевому члену этой последовательности.

Существование таких [math]r_1, r_2, ...[/math], то есть возможность деления с остатком [math]m[/math] на [math]n[/math] для любого целого [math]m[/math] и целого [math]n\ne 0[/math], доказывается индукцией по m.

Корректность этого алгоритма вытекает из следующих двух утверждений:

  • Пусть [math]a = bq + r[/math], тогда [math]\gcd (a,b) = \gcd (b,r).[/math]
  • [math]\gcd (0,r) = r[/math] для любого ненулевого [math]r.[/math]

Проще сформулировать алгоритм Евклида так: если даны натуральные числа [math]a[/math] и [math]b[/math] и, пока получается положительное число, по очереди вычитать из большего меньшее, то в результате получится НОД.

Расширенный алгоритм Евклида

Формулы для [math]r_i[/math] могут быть переписаны следующим образом:

[math]r_1 = a + b(-q_0)[/math]
[math]r_2= b - r_1q_1 = a(-q_1)+b(1+q_1q_0)[/math]
[math]\cdots[/math]
[math]\gcd (a,b) = r_n = as + bt[/math]

здесь s и t целые. Это представление наибольшего общего делителя называется соотношением Безу, а числа s и tкоэффициентами Безу. Соотношение Безу является ключевым в доказательстве леммы Евклида и основной теоремы арифметики.

Связь с цепными дробями

Отношение [math]a/b[/math] допускает представление в виде цепной дроби:

[math]\frac ab=[q_0; q_1, q_2,\cdots,q_n][/math].

При этом цепная дробь без последнего члена равна отношению коэффициентов Безу [math]t/s[/math], взятому со знаком минус:

[math][q_0; q_1, q_2,\cdots,q_{n-1}] = -\frac ts[/math].

Наибольший общий делитель как общий делитель, делящий все остальные общие остальные общие делители