Алгоритм Евкліда (також називається евклідів алгоритм) — ефективний метод обчислення найбільшого спільного дільника (НСД). Названий на честь грецького математика Евкліда, котрий описав його в книгах VII та X Начал.
Найбільший спільний дільник двох чисел це найбільше число, що ділить обидва дані числа без остачі. Алгоритм Евкліда заснований на тому, що НСД не змінюється, якщо від більшого числа відняти менше. Наприклад, 21 є НСД чисел 252 та 105 (252 = 21 × 12; 105 = 21 × 5); оскільки 252 − 105 = 147, НСД 147 та 105 також 21. Оскільки більше з двох чисел постійно зменшується, повторне виконання цього кроку дає все менші числа, поки одне з них не дорівнюватиме нулю. Коли одне з чисел дорівнюватиме нулю, те, що залишилось, і є НСД. Обертаючи кроки алгоритму Евкліда у зворотний порядок, НСД можна виразити як лінійну комбінацію даних чисел помножених на цілі коефіцієнти, наприклад 21 = 5 × 105 + (−2) × 252. Ця важлива властивість відома як рівняння Безу.
Найдавніший опис алгоритму знаходиться в Началах Евкліда (біля 300 до н. е.), що робить його найдавнішим чисельним алгоритмом, яким користуються і нині. Оригінальний варіант алгоритму описував роботу лише з натуральними числами та геометричними довжинами (дійсними числами), алгоритм було узагальнено в XIX столітті на роботу з іншими типами чисел, такими як Гаусові числа та поліноми з однією змінною. Це призвело до появи сучасних алгебраїчних понять, таких як Евклідові класи. Алгоритм Евкліда було узагальнено ще далі для роботи з іншими математичними структурами, такими як вузли та поліноми від багатьох змінних.
Алгоритм Евкліда має багато застосувань на практиці, та в теорії. З його допомогою можна згенерувати практично всі найважливіші музичні ритми різних культур у всьому світі. Алгоритм Евкліда відіграє ключову роль в алгоритмі RSA, поширеному методі криптографії з відкритим ключем. Його також використовують для пошуку розв'язків Діофантових рівнянь, наприклад, пошук чисел, що задовільняють декільком умовам (Китайська теорема про залишки) або обернені числа в скінченному полі. Алгоритм Евкліда також застосовують для побудови ланцюгових дробів в методі Штурма для пошуку дійсних коренів полінома, та в сучасних методах факторизації цілих. Нарешті, він виступає простим інструментом для доведення теорем в теорії чисел, таких, як Теорема Лагранжа про чотири квадрати та основної теореми арифметики.
Алгоритм Евкліда ефективно обчислює НСД великих чисел, оскільки виконує операцій не більше, ніж вп'ятеро більше кількості цифр меншого числа (в десятковій системі). Цю властивість було доведено Ґабріелем Ламе (англ. Gabriel Lamé) в 1844 році, що позначило початок теорії складності обчислень. Методи підвищення ефективності алгоритму були розроблені в XX столітті.
Вступ
Найбільший спільний дільник
Алгоритм Евкліда обчислює найбільший спільний дільник (НСД) двох натуральних чисел a та b. Найбільший спільний дільник g — це найбільше натуральне число яке ділить як a так і b без остачі. Найбільший спільний дільник також записують як НСД(a, b) або, простіше, (a, b) хоча останнє позначення використовують і для інших математичних понять, таких як координати двовимірних векторів.
Якщо НСД(a, b) = 1, тоді a та b називають взаємно простими. Ця властивість не залежить від того, чи прості числа a та b. Наприклад, ні 6 ні 35 не прості, оскільки їх можна розкласти на добутки 6 = 2 × 3 та 35 = 5 × 7. Однак, 6 та 35 взаємно прості. Жодне натуральне число окрім 1 не ділить водночас 6 та 35, оскільки у них нема спільних дільників.
Нехай g = НСД(a, b). Оскільки a та b є добутками g, їх можна записати, як a = mg та b = ng, і не існує більшого числа G > g з такою ж властивістю. Натуральні числа m та n мають бути взаємно простими, оскільки інший спільний дільник може бути виділений з m та n, що збільшить g. Таким чином, будь-яке число c, що ділить a та b має ділити і g. Найбільший спільний дільник g чисел a та b може бути визначений, як спільний дільник, який можна поділити іншим спільним дільником c.
Поняття НСД можна проілюструвати наступним чином. Розглянемо прямокутник зі сторонами a та b, та будь-який спільний дільник c, що ділить і a, і b без остачі. Ребра прямокутника можна поділити на відрізки довжиною c, які поділять прямокутник на сітку квадратів зі стороною c. Найбільший спільний дільник g дорівнює найбільшому можливому значенню c. Наприклад, прямокутник 24 на 60 може бути покрита сіткою квадратів зі стороною 1, 2, 3, 6 або 12. Таким чином, 12 є найбільшим спільним дільником 24 та 60. Прямокутник 24 на 60 можна поділити сіткою квадратами з ребром 12, два квадрати вздовж одного ребра (24/12 = 2), та п'ятеро (60/12 = 5) вздовж іншого.
Найбільший спільний дільник a та b можна визначити як добуток спільних дільників обох чисел. Наприклад, оскільки 462 можна розкласти на добуток 2 × 3 × 7 × 11 а 1071 можна розкласти на добуток 3 × 3 × 7 × 17, найбільший спільний дільник 462 та 1071 дорівнює 21 = 3 × 7, добутку їхніх спільних дільників. Якщо два числа не мають спільних дільників, їх найбільший спільних дільник 1 і вони взаємно прості. Ключовою перевагою алгоритму Евкліда є ефективне знаходження НСД без необхідності обчислення дільників. Розклад великих цілих чисел на дільники є криптографічно складною задачею, яка лежить в основі багатьох сучасних криптографічних систем.
НСД трьох або більшої кількості чисел дорівнює добутку дільників спільних для трьох чисел, який можна обчислити на основі НСД пар чисел. Наприклад,
- НСД(a, b, c) = НСД(a, НСД(b, c)) = НСД(НСД(a, b), c) = НСД(НСД(a, c), b).
Тобто, алгоритм Евкліда обчислення найбільшого спільного дільника двох цілих підходить і для обчислення НСД довільної кількості цілих.
Характеристики
Алгоритм
Алгоритм Евкліда ітеративний, тобто, пошук розв'язку відбувається за декілька кроків. Для того щоб знайти НСД(a, b) на 0-му кроці знаходять остачу r0 від ділення a на b. На 1-му кроці знаходять остачу від ділення b на r0. Оскільки остачі зменшуються на кожному кроці але не можуть бути від'ємними, то цю операцію виконують n кроків до тих пір поки не отримують остачу 0. Найбільшим спільним дільником є остання не нульова остача rn−1. Кількість кроків в алгоритмі має бути скінченною, оскільки існує лише скінченна кількість цілих чисел між початковою остачею r0 та нулем.
Доведення алгоритму Евкліда
Правильність алгоритму Евкліда можна довести за два кроки. Спочатку необхідно довести, що rn−1 дійсно є дільником a та b, а потім необхідно довести, що це є найбільший спільний дільник.
Доведення, що є дільником a та b
З n-го кроку випливає, що ( ділиться на ). Підставимо в n-1-й крок. Маємо:
Таким чином . Повторимо цю операцію n разів і отримаємо, що та . Отже, є дільником a та b.
Доведення, що є найбільшим дільником a та b
За означенням число називається найбільшим спільним дільником a та b, тоді і тільки тоді, коли для будь-якого числа для якого виконується: та має виконуватись, що .
Нехай k є дільником a та b, тоді та або можна сказати, що існують такі числа та , що
Підставимо в 1-й крок алгоритму:
і виконаємо перетворення:
Отже, . Підставимо в 2-й крок і аналогічно продовжимо до тих пір поки з останнього кроку не отримаємо, що , що доводить те, що є найбільшим спільним дільником.
Реалізації
Реалізації алгоритму можна записати у псевдокоді. Наприклад, версію, основану на операції ділення, можна запрограмувати наступним чином:
функція нсд(a, b) поки b ≠ 0 t := b b := a mod b a := t поверни a
На початку k-ї ітерації, змінна b має значення останньої остачі rk−1, а змінна a має значення попередньої остачі rk−2. Крок b := a mod b еквівалентний рекурсивній формулі rk ≡ rk−2 mod rk−1. Допоміжна змінна t має значення rk−1 поки відбувається обчислення наступної остачі rk. В кінці циклу, змінна b має значення остачі rk, а змінна a має значення попередньої rk−1.
В описаній Евклідом версії алгоритму, обчислення остачі (b = a mod b) замінено повторним відніманням.
функція нсд(a, b) якщо a = 0 поверни b поки b ≠ 0 якщо a > b a := a − b інакше b := b − a поверни a
Змінні a та b почергово набувають значення попередніх остач rk−1 та rk−2. Якщо a більше за b на початку ітерації; тоді a дорівнює rk−2, оскільки rk−2 > rk−1. Протягом циклу, a зменшується на число, кратне попередній остачі b доки a не стане меншим за b. Тоді a стає наступною остачею rk. Потім b зменшується на число, кратне a поки не стане меншим за a, даючи значення наступної остачі rk+1, і так далі.
Рекурсивна версія основана на рівності НСД послідовних остач та умові зупинки НСД(rN−1, 0) = rN−1.
функція нсд(a, b) якщо b = 0 поверни a інакше поверни нсд(b, a mod b)
Наприклад, НСД(1071, 462) обчислюють на основі еквівалентного значення НСД(462, 1071 mod 462) = НСД(462, 147). Яке, в свою чергу, обчислюють на основі НСД(147, 462 mod 147) = НСД(147, 21), а це, обчислюють від НСД(21, 147 mod 21) = НСД(21, 0) = 21.
Метод найменших абсолютних остач
В іншому варіанті реалізації алгоритму Евкліда на кожному кроці частку збільшують на 1 якщо отримане абсолютне значення від'ємної остачі менше за додатну остачу. В інших версіях, в рівнянні
- rk−2 = qk rk−1 + rk
припускалось, що rk−1 > rk > 0. Однак, іншу від'ємну остачу ek можна обчислити таким чином:
- rk−2 = (qk + 1) rk−1 + ek
де rk−1 вважається додатнім. Якщо |ek| < |rk|, тоді rk замінюють на ek. Як показано Леопольдом Кронекером, цей варіант витрачає найменшу кількість кроків у порівнянні з іншими варіантами алгоритму.
Історія
Алгоритм Евкліда один з найдавніших алгоритмів, що досі використовують. Він описаний в Началах Евкліда (приблизно 300 до н. е.), а саме, в книгах VII та X. В сьомій книзі алгоритм описано для цілих чисел, а в десятій — для довжин відрізків. Можна сказати, що алгоритм описано для дійсних чисел. Однак, довжина, площа та об'єм, що їх вимірюють нині в дійсних числах, вимірюють у різних одиницях та не існує універсальної природної одиниці для вимірювання довжини, площі або об'єму. Також поняття дійсних чисел в ті часи було ще не відоме. Другий алгоритм геометричний. НСД двох довжин a та b відповідає довжині найдовшого відрізку g, яким можна виміряти a та b без остачі; іншими словами, довжини відрізків a та b дорівнюють добуткові довжини g на ціле число.
Можливо, алгоритм було відкрито не Евклідом, а він лише використав результати, отримані попередниками в Началах. Математик та історик Ван дер Варден вважає, що книгу VII написано на основі підручника з теорії чисел авторства одного з математиків школи Піфагора. Ймовірно, алгоритм був відомий ще Евдоксу Кіндському (приблизно 375 до н. е.). Можливо, навіть, алгоритм був відомий ще до Евдокса, судячи з використання поняття грец. ἀνθυφαίρεσις (антифарезис) в роботах Евкліда та Арістотеля.
Нові можливості застосування алгоритму Евкліда було знайдено в XIX столітті. В 1829 році застосував алгоритм Евкліда в методі Штурма для пошуку дійсних коренів поліномів у заданому інтервалі.
Алгоритмічна ефективність
Обчислювальну ефективність алгоритму Евкліда ретельно досліджено. Ефективність роботи можна описати як необхідну алгоритму кількість кроків помножену на обчислювальні витрати кожного кроку. Як було показано Ґабріелєм Ламі в 1844 році, кількість необхідних кроків ніколи не більша за кількість цифр h (в десятковій системі) меншого з чисел b помножена на 5. Оскільки обчислювальні витрати кожного кроку зазвичай порядку h, загальні витрати зростають на рівні h2.
Кількість кроків
Кількість кроків необхідних для обчислення НСД пари натуральних чисел, a та b, можна позначити як T(a, b). Якщо g є НСД a та b, тоді a = mg та b = ng де m та n взаємно прості числа. Тоді
- T(a, b) = T(m, n)
що можна отримати поділивши всі кроки алгоритму на g. Аналогічно, кількість кроків лишається незмінною якщо a та b помножити на спільний дільник w: T(a, b) = T(wa, wb). Таким чином, кількість кроків T може сильно відрізнятись для пари сусідніх чисел, наприклад T(a, b) та T(a, b + 1), в залежності від розміру обох НСД.
Рекурсивна природа алгоритму Евкліда дає наступне рівняння
- T(a, b) = 1 + T(b, r0) = 2 + T(r0, r1) = … = N + T(rN−2, rN−1) = N + 1
де T(x, 0) = 0 за припущенням.
Кількість кроків у найгіршому випадку
Якщо алгоритму Евкліда необхідні N кроків для обчислення НСД натуральних чисел a > b > 0, то найменші числа, для яких це дійсне, є числа Фібоначчі FN+2 та FN+1. Цю властивість можна довести методом математичної індукції. Якщо N = 1, b ділить a без остачі; найменші натуральні числа, для яких це правильно — b = 1 та a = 2, які дорівнюють F2 та F3 відповідно. Припустімо, що це правильно для значень N не більших за M − 1. Першим кроком M-крокового алгоритму є a = q0b + r0, а другим b = q1r0 + r1. Оскільки алгоритм рекурсивний, йому необхідно M − 1 кроків для знаходження НСД(b, r0) та найменшими значеннями є FM+1 та FM. Таким чином, a має найменше значення коли q0 = 1, що значить a = b + r0 = FM+1 + FM = FM+2. Це доведення, оприлюднене Ґабріелем Ламі в 1844 заклало основи теорії обчислювальної складності, а також є першим застосуванням чисел Фібоначчі на практиці.
Цього результату достатньо, аби показати, що алгоритм Евкліда виконує кроків не більше, ніж вп'ятеро більше кількості цифр меншого числа (в десятковій системі). Якщо алгоритму потрібно більше N кроків, тоді b більше або дорівнює FN+1, що, в свою чергу. більше або дорівнює φN−1, де φ дорівнює золотому перетину. Оскільки b ≥ φN−1, тоді N − 1 ≤ logφb. Оскільки log10φ > 1/5, (N − 1)/5 < log10φ logφb = log10b. Таким чином, N ≤ 5 log10b. Звідси випливає, що алгоритм Евкліда потребує менше за O(h) ділень, де h дорівнює кількості цифр в меншому числі b.
Середня кількість кроків
Середню кількість кроків необхідних алгоритму Евкліда було визначено в три різні способи. Перше визначення, це середній час T(a) необхідний для обчислення НСД заданого числа a та меншого натурального числа b обраного з рівною ймовірністю з цілих від 0 до a - 1
Однак, оскільки T(a, b) істотно змінюється в залежності від НСД обох чисел, усереднена функція T(a) також містить «шум».
Аби зменшити цей шум, використовують друге середнє τ(a) для взаємно простих до a чисел.
Всього існує φ(a) взаємно простих чисел менших за a, де φ це функція Ейлера. Значення τ поступово зростає разом з a
- τ(a) = (12/π2) ln 2 ln a + C + O(a−(1/6) + ε)
з похибкою порядку a−(1/6) + ε, де ε нескінченно мала. Стала C в цій формулі дорівнює
- C = −(1/2) + 6 (ln 2/π2)( 4γ − 24π2ζ '(2) + 3 ln 2 − 2) ≈ 1.467
де γ це Стала Ейлера — Маскероні, а ζ' — похідна дзета-функції Рімана. Значення основного коефіцієнту (12/π2) ln 2 було визначено двома незалежними методами.
Оскільки перше середнє може бути обчислене на основі тау середнього додаванням дільників d числа a
воно може бути наближене формулою
- T(a) ≈ C + (12/π2) ln 2 ( ln a − Σd|a Λ(d)/d )
де Λ(d) — .
Третє середнє Y(n) визначають як середню кількість кроків необхідних для обчислення НСД коли a та b випадкові числа (рівномірно розподілені) від 1 до n
Заміна наближеною формулою для T(a) в це рівняння дає оцінку Y(n)
- Y(n) ≈ (12/π2) ln 2 ln n + 0.06.
Обчислювальні витрати за крок
На кожному кроці k алгоритму Евкліда, обчислюють частку qk та остачу rk для пари цілих rk−2 та rk−1
- rk−2 = qk rk−1 + rk.
Основні витрати за крок полягають в обчисленні qk, оскільки остача rk можна швидко обчислити на основі rk−2, rk−1 та qk
- rk = rk−2 − qk rk−1.
Обчислювальна складність ділення h-бітних чисел змінюються як O(h(ℓ+1)), де ℓ — довжина частки.
Для порівняння, оригінальний варіант алгоритму на основі віднімання може бути набагато повільнішим. Ділення цілого еквівалентне q віднімань, де q — частка. Якщо відношення a до b велике, частка буде також великою і знадобиться велика кількість віднімань. З іншого боку, було показано, що частки найімовірніше матимуть невеликі значення. Ймовірність отримати частку q приблизно ln|u/(u − 1)| де u = (q + 1)2. Наприклад, ймовірність отримати частку 1, 2, 3, або 4 дорівнює приблизно 41.5%, 17.0%, 9.3%, та 5.9%, відповідно. Оскільки операція віднімання швидша за ділення, особливо для великих чисел, оснований на відніманні алгоритм Евкліда може бути на рівні з основаним на діленні. Цю властивість використано в бінарному алгоритмі Евкліда.
Поєднання оцінки кількості кроків з оцінкою обчислювальних витрат на крок показує, що витрати алгоритму Евкліда зростають квадратично (h2) в залежності від середньої кількості цифр h в заданих числах. Нехай h0, h1, …, hN−1 дорівнює кількості цифр в послідовних остачах r0, r1, …, rN−1. Оскільки кількість кроків N зростає пропорційно h, час роботи алгоритму обмежено
Приклад
Обчислимо НСД чисел 1071 та 1029.
a | b | Пояснення | ||
НСД( | 1071, | 1029) | Початкові аргументи | |
= | НСД( | 1029, | 42) | 1071 mod 1029 = 42 |
= | НСД( | 42, | 21) | 1029 mod 42 = 21 |
= | НСД( | 21, | 0) | 42 mod 21 = 0 |
= | 21 | Оскільки b=0, то повертаємо a=21 |
У випадку невеликих чисел, можна використати послідовне ділення у стовпчик. Наприклад, нам потрібно знайти НСД (2700, 1520):
Отже, НСД (2700, 1520) = 20.
Див. також
Посилання
- , The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956,
- , "The Euclidean algorithm generates traditional musical rhythms, " Proceedings of BRIDGES: Mathematical Connections in Art, Music, and Science, Banff, Alberta, Canada, July 31 to August 3, 2005, pp. 47—56.
- Stark, ст. 16.
- Stark, ст. 21.
- LeVeque, ст. 32.
- Leveque, p. 31.
- Grossman JW (1990). Discrete Mathematics. New York: Macmillan. с. 213. ISBN .
- Schroeder, ст. 21-22.
- Schroeder, ст. 19.
- Ogilvy CS, Anderson JT (1966). Excursions in number theory. New York: Oxford University Press. с. 27—29. LCCN 66-14484.
- Schroeder, ст. 216—219.
- Stark, p. 25.
- Ore, pp. 47-48.
- Stark, ст. 16-20.
- Knuth, ст. 319—320.
- Knuth, ст. 318—319.
- Stillwell, ст. 14.
- Ore, p. 43.
- Stewart BM (1964). Theory of Numbers (вид. 2nd). New York: Macmillan. с. 43—44. LCCN 64-10964.
- Knuth, p. 318.
- Weil A (1983). Number Theory. Boston: Birkhäuser. с. 4—6. ISBN .
- Jones A (1994). Greek mathematics to AD 300. Companion encyclopedia of the history and philosophy of the mathematical sciences. New York: Routledge. с. 46—48. ISBN .
- (1954). Science Awakening. translated by Arnold Dresden. Groningen: P. Noordhoff Ltd. с. 114—115.
- von Fritz K (1945). The Discovery of Incommensurability by Hippasus of Metapontum. Ann. Math. 46: 242—264. doi:10.2307/1969021.
- (1949). Mathematics in Aristotle. Oxford Press. с. 80—83.
- (1987). The Mathematics of Plato's Academy: A New Reconstruction. Oxford: Oxford University Press. с. 31–66. ISBN .
- Becker O (1933). Eudoxus-Studien I. Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid. Quellen und Studien zur Geschichte der Mathematik B. 2: 311—333.
- Sturm C (1829). Mémoire sur la résolution des équations numériques. Bull. des sciences de Férussac. 11: 419—422.
- Knuth, pp. 339–364.
- (1844). Note sur la limite du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers. Comptes Rendus Acad. Sci. 19: 867—870.
- Grossman H (1924). On the Number of Divisions in Finding a G.C.D. The American Mathematical Monthly. 31: 443. doi:10.2307/2298146.
- Honsberger R (1976). Mathematical Gems II. The Mathematical Association of America. с. 54—57. ISBN .
- Knuth, p. 344.
- Ore, p. 45.
- Knuth, p. 343.
- Mollin, p. 21.
- LeVeque, p. 35.
- Mollin, pp. 21–22.
- Knuth, p. 353.
- Knuth, p. 357.
- Tonkov T (1974). On the average length of finite continued fractions. Acta arithmetica. 26: 47—57.
- Porter JW (1975). On a Theorem of Heilbronn. Mathematika. 22: 20—28.
- Knuth DE (1976). Evaluation of Porter's Constant. Computers and Mathematics with Applications. 2: 137—139. doi:10.1016/0898-1221(76)90025-0.
- Dixon JD (1970). The Number of Steps in the Euclidean Algorithm. J. Number Theory. 2: 414—422. doi:10.1016/0022-314X(70)90044-2.
- Heilbronn HA (1969). On the Average Length of a Class of Finite Continued Fractions. У Paul Turán (ред.). Number Theory and Analysis. New York: Plenum. с. 87—96. LCCN 68-8991.
- Knuth, p. 354.
- Norton GH (1990). On the Asymptotic Analysis of the Euclidean Algorithm. Journal of Symbolic Computation. 10: 53—58. doi:10.1016/S0747-7171(08)80036-3.
- Knuth, p. 355.
- Knuth, p. 356.
- Knuth, pp. 257–261.
- Knuth, p. 352.
- Wagon S (1999). Mathematica in Action. New York: Springer-Verlag. с. 335—336. ISBN .
- Cohen, p. 14.
- Cohen, pp. 14–15, 17–18.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Evklida takozh nazivayetsya evklidiv algoritm efektivnij metod obchislennya najbilshogo spilnogo dilnika NSD Nazvanij na chest greckogo matematika Evklida kotrij opisav jogo v knigah VII ta X Nachal Animaciya algoritmu Evklida dlya chisel 252 ta 105 Risochki vidpovidayut chislam kratnim 21 najbilshomu spilnomu dilnikovi NSD Na kozhnomu kroci menshe chislo vidnimayut vid bilshogo poki odne z nih ne dorivnyuvatime nulyu Chislo sho lishilos i ye NSD Najbilshij spilnij dilnik dvoh chisel ce najbilshe chislo sho dilit obidva dani chisla bez ostachi Algoritm Evklida zasnovanij na tomu sho NSD ne zminyuyetsya yaksho vid bilshogo chisla vidnyati menshe Napriklad 21 ye NSD chisel 252 ta 105 252 21 12 105 21 5 oskilki 252 105 147 NSD 147 ta 105 takozh 21 Oskilki bilshe z dvoh chisel postijno zmenshuyetsya povtorne vikonannya cogo kroku daye vse menshi chisla poki odne z nih ne dorivnyuvatime nulyu Koli odne z chisel dorivnyuvatime nulyu te sho zalishilos i ye NSD Obertayuchi kroki algoritmu Evklida u zvorotnij poryadok NSD mozhna viraziti yak linijnu kombinaciyu danih chisel pomnozhenih na cili koeficiyenti napriklad 21 5 105 2 252 Cya vazhliva vlastivist vidoma yak rivnyannya Bezu Najdavnishij opis algoritmu znahoditsya v Nachalah Evklida bilya 300 do n e sho robit jogo najdavnishim chiselnim algoritmom yakim koristuyutsya i nini Originalnij variant algoritmu opisuvav robotu lishe z naturalnimi chislami ta geometrichnimi dovzhinami dijsnimi chislami algoritm bulo uzagalneno v XIX stolitti na robotu z inshimi tipami chisel takimi yak Gausovi chisla ta polinomi z odniyeyu zminnoyu Ce prizvelo do poyavi suchasnih algebrayichnih ponyat takih yak Evklidovi klasi Algoritm Evklida bulo uzagalneno she dali dlya roboti z inshimi matematichnimi strukturami takimi yak vuzli ta polinomi vid bagatoh zminnih Algoritm Evklida maye bagato zastosuvan na praktici ta v teoriyi Z jogo dopomogoyu mozhna zgeneruvati praktichno vsi najvazhlivishi muzichni ritmi riznih kultur u vsomu sviti Algoritm Evklida vidigraye klyuchovu rol v algoritmi RSA poshirenomu metodi kriptografiyi z vidkritim klyuchem Jogo takozh vikoristovuyut dlya poshuku rozv yazkiv Diofantovih rivnyan napriklad poshuk chisel sho zadovilnyayut dekilkom umovam Kitajska teorema pro zalishki abo oberneni chisla v skinchennomu poli Algoritm Evklida takozh zastosovuyut dlya pobudovi lancyugovih drobiv v metodi Shturma dlya poshuku dijsnih koreniv polinoma ta v suchasnih metodah faktorizaciyi cilih Nareshti vin vistupaye prostim instrumentom dlya dovedennya teorem v teoriyi chisel takih yak Teorema Lagranzha pro chotiri kvadrati ta osnovnoyi teoremi arifmetiki Algoritm Evklida efektivno obchislyuye NSD velikih chisel oskilki vikonuye operacij ne bilshe nizh vp yatero bilshe kilkosti cifr menshogo chisla v desyatkovij sistemi Cyu vlastivist bulo dovedeno Gabrielem Lame angl Gabriel Lame v 1844 roci sho poznachilo pochatok teoriyi skladnosti obchislen Metodi pidvishennya efektivnosti algoritmu buli rozrobleni v XX stolitti VstupNajbilshij spilnij dilnik Algoritm Evklida obchislyuye najbilshij spilnij dilnik NSD dvoh naturalnih chisel a ta b Najbilshij spilnij dilnik g ce najbilshe naturalne chislo yake dilit yak a tak i b bez ostachi Najbilshij spilnij dilnik takozh zapisuyut yak NSD a b abo prostishe a b hocha ostannye poznachennya vikoristovuyut i dlya inshih matematichnih ponyat takih yak koordinati dvovimirnih vektoriv Yaksho NSD a b 1 todi a ta b nazivayut vzayemno prostimi Cya vlastivist ne zalezhit vid togo chi prosti chisla a ta b Napriklad ni 6 ni 35 ne prosti oskilki yih mozhna rozklasti na dobutki 6 2 3 ta 35 5 7 Odnak 6 ta 35 vzayemno prosti Zhodne naturalne chislo okrim 1 ne dilit vodnochas 6 ta 35 oskilki u nih nema spilnih dilnikiv Pryamokutnik z rebrami 24 odinici na 60 pokrito kvadratami z rebrom 12 odinic de 12 ce NSD 24 ta 60 V zagalnomu vipadku pryamokutnik z rebrami a na b mozhe buti pokrito kvadratami z rebrom c todi i lishe todi koli c ye NSD a ta b Nehaj g NSD a b Oskilki a ta b ye dobutkami g yih mozhna zapisati yak a mg ta b ng i ne isnuye bilshogo chisla G gt g z takoyu zh vlastivistyu Naturalni chisla m ta n mayut buti vzayemno prostimi oskilki inshij spilnij dilnik mozhe buti vidilenij z m ta n sho zbilshit g Takim chinom bud yake chislo c sho dilit a ta b maye diliti i g Najbilshij spilnij dilnik g chisel a ta b mozhe buti viznachenij yak spilnij dilnik yakij mozhna podiliti inshim spilnim dilnikom c Ponyattya NSD mozhna proilyustruvati nastupnim chinom Rozglyanemo pryamokutnik zi storonami a ta b ta bud yakij spilnij dilnik c sho dilit i a i b bez ostachi Rebra pryamokutnika mozhna podiliti na vidrizki dovzhinoyu c yaki podilyat pryamokutnik na sitku kvadrativ zi storonoyu c Najbilshij spilnij dilnik g dorivnyuye najbilshomu mozhlivomu znachennyu c Napriklad pryamokutnik 24 na 60 mozhe buti pokrita sitkoyu kvadrativ zi storonoyu 1 2 3 6 abo 12 Takim chinom 12 ye najbilshim spilnim dilnikom 24 ta 60 Pryamokutnik 24 na 60 mozhna podiliti sitkoyu kvadratami z rebrom 12 dva kvadrati vzdovzh odnogo rebra 24 12 2 ta p yatero 60 12 5 vzdovzh inshogo Najbilshij spilnij dilnik a ta b mozhna viznachiti yak dobutok spilnih dilnikiv oboh chisel Napriklad oskilki 462 mozhna rozklasti na dobutok 2 3 7 11 a 1071 mozhna rozklasti na dobutok 3 3 7 17 najbilshij spilnij dilnik 462 ta 1071 dorivnyuye 21 3 7 dobutku yihnih spilnih dilnikiv Yaksho dva chisla ne mayut spilnih dilnikiv yih najbilshij spilnih dilnik 1 i voni vzayemno prosti Klyuchovoyu perevagoyu algoritmu Evklida ye efektivne znahodzhennya NSD bez neobhidnosti obchislennya dilnikiv Rozklad velikih cilih chisel na dilniki ye kriptografichno skladnoyu zadacheyu yaka lezhit v osnovi bagatoh suchasnih kriptografichnih sistem NSD troh abo bilshoyi kilkosti chisel dorivnyuye dobutku dilnikiv spilnih dlya troh chisel yakij mozhna obchisliti na osnovi NSD par chisel Napriklad NSD a b c NSD a NSD b c NSD NSD a b c NSD NSD a c b Tobto algoritm Evklida obchislennya najbilshogo spilnogo dilnika dvoh cilih pidhodit i dlya obchislennya NSD dovilnoyi kilkosti cilih HarakteristikiAlgoritm a q 0 b r 0 0 displaystyle a q 0 b r 0 qquad text 0 b q 1 r 0 r 1 1 displaystyle b q 1 r 0 r 1 qquad text 1 r 0 q 2 r 1 r 2 2 displaystyle r 0 q 2 r 1 r 2 qquad text 2 r 1 q 3 r 2 r 3 3 displaystyle r 1 q 3 r 2 r 3 qquad text 3 displaystyle dots r n 3 q n 1 r n 2 r n 1 n 1 displaystyle r n 3 q n 1 r n 2 r n 1 qquad text n 1 r n 2 q n r n 1 0 n displaystyle r n 2 q n r n 1 0 qquad text n Algoritm Evklida iterativnij tobto poshuk rozv yazku vidbuvayetsya za dekilka krokiv Dlya togo shob znajti NSD a b na 0 mu kroci znahodyat ostachu r0 vid dilennya a na b Na 1 mu kroci znahodyat ostachu vid dilennya b na r0 Oskilki ostachi zmenshuyutsya na kozhnomu kroci ale ne mozhut buti vid yemnimi to cyu operaciyu vikonuyut n krokiv do tih pir poki ne otrimuyut ostachu 0 Najbilshim spilnim dilnikom ye ostannya ne nulova ostacha rn 1 Kilkist krokiv v algoritmi maye buti skinchennoyu oskilki isnuye lishe skinchenna kilkist cilih chisel mizh pochatkovoyu ostacheyu r0 ta nulem Dovedennya algoritmu Evklida Pravilnist algoritmu Evklida mozhna dovesti za dva kroki Spochatku neobhidno dovesti sho rn 1 dijsno ye dilnikom a ta b a potim neobhidno dovesti sho ce ye najbilshij spilnij dilnik Dovedennya sho r n 1 displaystyle r n 1 ye dilnikom a ta b Z n go kroku viplivaye sho r n 2 r n 1 displaystyle r n 2 vdots r n 1 r n 2 displaystyle r n 2 dilitsya na r n 1 displaystyle r n 1 Pidstavimo r n 2 displaystyle r n 2 v n 1 j krok Mayemo r n 3 q n 1 q n r n 1 r n 1 displaystyle r n 3 q n 1 q n r n 1 r n 1 r n 3 r n 1 q n 1 q n 1 displaystyle r n 3 r n 1 q n 1 q n 1 Takim chinom r n 3 r n 1 displaystyle r n 3 vdots r n 1 Povtorimo cyu operaciyu n raziv i otrimayemo sho a r n 1 displaystyle a vdots r n 1 ta b r n 1 displaystyle b vdots r n 1 Otzhe r n 1 displaystyle r n 1 ye dilnikom a ta b Dovedennya sho r n 1 displaystyle r n 1 ye najbilshim dilnikom a ta b Za oznachennyam chislo d displaystyle d nazivayetsya najbilshim spilnim dilnikom a ta b todi i tilki todi koli dlya bud yakogo chisla k displaystyle forall k dlya yakogo vikonuyetsya a k displaystyle a vdots k ta b k displaystyle b vdots k maye vikonuvatis sho d k displaystyle d vdots k Nehaj k ye dilnikom a ta b todi a k displaystyle a vdots k ta b k displaystyle b vdots k abo mozhna skazati sho isnuyut taki chisla a 1 displaystyle a 1 ta b 1 displaystyle b 1 sho a a 1 k displaystyle a a 1 k b b 1 k displaystyle b b 1 k Pidstavimo v 1 j krok algoritmu a 1 k q 0 b 1 k r 0 displaystyle a 1 k q 0 b 1 k r 0 i vikonayemo peretvorennya r 0 a 1 k q 0 b 1 k displaystyle r 0 a 1 k q 0 b 1 k r 0 k a 1 q 0 b 1 displaystyle r 0 k a 1 q 0 b 1 Otzhe r 0 k displaystyle r 0 vdots k Pidstavimo r 0 displaystyle r 0 v 2 j krok i analogichno prodovzhimo do tih pir poki z ostannogo kroku ne otrimayemo sho r n 1 k displaystyle r n 1 vdots k sho dovodit te sho r n 1 displaystyle r n 1 ye najbilshim spilnim dilnikom Realizaciyi Realizaciyi algoritmu mozhna zapisati u psevdokodi Napriklad versiyu osnovanu na operaciyi dilennya mozhna zaprogramuvati nastupnim chinom funkciya nsd a b poki b 0 t b b a mod b a t poverni a Na pochatku k yi iteraciyi zminna b maye znachennya ostannoyi ostachi rk 1 a zminna a maye znachennya poperednoyi ostachi rk 2 Krok b a mod b ekvivalentnij rekursivnij formuli rk rk 2 mod rk 1 Dopomizhna zminna t maye znachennya rk 1 poki vidbuvayetsya obchislennya nastupnoyi ostachi rk V kinci ciklu zminna b maye znachennya ostachi rk a zminna a maye znachennya poperednoyi rk 1 V opisanij Evklidom versiyi algoritmu obchislennya ostachi b a mod b zamineno povtornim vidnimannyam funkciya nsd a b yaksho a 0 poverni b poki b 0 yaksho a gt b a a b inakshe b b a poverni a Zminni a ta b pochergovo nabuvayut znachennya poperednih ostach rk 1 ta rk 2 Yaksho a bilshe za b na pochatku iteraciyi todi a dorivnyuye rk 2 oskilki rk 2 gt rk 1 Protyagom ciklu a zmenshuyetsya na chislo kratne poperednij ostachi b doki a ne stane menshim za b Todi a staye nastupnoyu ostacheyu rk Potim b zmenshuyetsya na chislo kratne a poki ne stane menshim za a dayuchi znachennya nastupnoyi ostachi rk 1 i tak dali Rekursivna versiya osnovana na rivnosti NSD poslidovnih ostach ta umovi zupinki NSD rN 1 0 rN 1 funkciya nsd a b yaksho b 0 poverni a inakshe poverni nsd b a mod b Napriklad NSD 1071 462 obchislyuyut na osnovi ekvivalentnogo znachennya NSD 462 1071 mod 462 NSD 462 147 Yake v svoyu chergu obchislyuyut na osnovi NSD 147 462 mod 147 NSD 147 21 a ce obchislyuyut vid NSD 21 147 mod 21 NSD 21 0 21 Metod najmenshih absolyutnih ostach V inshomu varianti realizaciyi algoritmu Evklida na kozhnomu kroci chastku zbilshuyut na 1 yaksho otrimane absolyutne znachennya vid yemnoyi ostachi menshe za dodatnu ostachu V inshih versiyah v rivnyanni rk 2 qk rk 1 rk pripuskalos sho rk 1 gt rk gt 0 Odnak inshu vid yemnu ostachu ek mozhna obchisliti takim chinom rk 2 qk 1 rk 1 ek de rk 1 vvazhayetsya dodatnim Yaksho ek lt rk todi rk zaminyuyut na ek Yak pokazano Leopoldom Kronekerom cej variant vitrachaye najmenshu kilkist krokiv u porivnyanni z inshimi variantami algoritmu IstoriyaJmovirno algoritm Evklida bulo vidkrito za stolittya do narodzhennya Evklida pokazanogo na kartini z cirkulem Algoritm Evklida odin z najdavnishih algoritmiv sho dosi vikoristovuyut Vin opisanij v Nachalah Evklida priblizno 300 do n e a same v knigah VII ta X V somij knizi algoritm opisano dlya cilih chisel a v desyatij dlya dovzhin vidrizkiv Mozhna skazati sho algoritm opisano dlya dijsnih chisel Odnak dovzhina plosha ta ob yem sho yih vimiryuyut nini v dijsnih chislah vimiryuyut u riznih odinicyah ta ne isnuye universalnoyi prirodnoyi odinici dlya vimiryuvannya dovzhini ploshi abo ob yemu Takozh ponyattya dijsnih chisel v ti chasi bulo she ne vidome Drugij algoritm geometrichnij NSD dvoh dovzhin a ta b vidpovidaye dovzhini najdovshogo vidrizku g yakim mozhna vimiryati a ta b bez ostachi inshimi slovami dovzhini vidrizkiv a ta b dorivnyuyut dobutkovi dovzhini g na cile chislo Mozhlivo algoritm bulo vidkrito ne Evklidom a vin lishe vikoristav rezultati otrimani poperednikami v Nachalah Matematik ta istorik Van der Varden vvazhaye sho knigu VII napisano na osnovi pidruchnika z teoriyi chisel avtorstva odnogo z matematikiv shkoli Pifagora Jmovirno algoritm buv vidomij she Evdoksu Kindskomu priblizno 375 do n e Mozhlivo navit algoritm buv vidomij she do Evdoksa sudyachi z vikoristannya ponyattya grec ἀn8yfairesis antifarezis v robotah Evklida ta Aristotelya Novi mozhlivosti zastosuvannya algoritmu Evklida bulo znajdeno v XIX stolitti V 1829 roci zastosuvav algoritm Evklida v metodi Shturma dlya poshuku dijsnih koreniv polinomiv u zadanomu intervali Algoritmichna efektivnistKilkist krokiv neobhidnih dlya obchislennya NSD x y za algoritmom Evklida Chervonim poznacheno tochki yaki vimagayut porivnyano nebagato krokiv shvidke obchislennya zhovtimi zelenimi ta sinimi poznacheno bilshu kilkist krokiv u poryadku zrostannya povilne obchislennya Obchislyuvalnu efektivnist algoritmu Evklida retelno doslidzheno Efektivnist roboti mozhna opisati yak neobhidnu algoritmu kilkist krokiv pomnozhenu na obchislyuvalni vitrati kozhnogo kroku Yak bulo pokazano Gabrielyem Lami v 1844 roci kilkist neobhidnih krokiv nikoli ne bilsha za kilkist cifr h v desyatkovij sistemi menshogo z chisel b pomnozhena na 5 Oskilki obchislyuvalni vitrati kozhnogo kroku zazvichaj poryadku h zagalni vitrati zrostayut na rivni h2 Kilkist krokiv Kilkist krokiv neobhidnih dlya obchislennya NSD pari naturalnih chisel a ta b mozhna poznachiti yak T a b Yaksho g ye NSD a ta b todi a mg ta b ng de m ta n vzayemno prosti chisla Todi T a b T m n sho mozhna otrimati podilivshi vsi kroki algoritmu na g Analogichno kilkist krokiv lishayetsya nezminnoyu yaksho a ta b pomnozhiti na spilnij dilnik w T a b T wa wb Takim chinom kilkist krokiv T mozhe silno vidriznyatis dlya pari susidnih chisel napriklad T a b ta T a b 1 v zalezhnosti vid rozmiru oboh NSD Rekursivna priroda algoritmu Evklida daye nastupne rivnyannya T a b 1 T b r0 2 T r0 r1 N T rN 2 rN 1 N 1 de T x 0 0 za pripushennyam Kilkist krokiv u najgirshomu vipadku Yaksho algoritmu Evklida neobhidni N krokiv dlya obchislennya NSD naturalnih chisel a gt b gt 0 to najmenshi chisla dlya yakih ce dijsne ye chisla Fibonachchi FN 2 ta FN 1 Cyu vlastivist mozhna dovesti metodom matematichnoyi indukciyi Yaksho N 1 b dilit a bez ostachi najmenshi naturalni chisla dlya yakih ce pravilno b 1 ta a 2 yaki dorivnyuyut F2 ta F3 vidpovidno Pripustimo sho ce pravilno dlya znachen N ne bilshih za M 1 Pershim krokom M krokovogo algoritmu ye a q0b r0 a drugim b q1r0 r1 Oskilki algoritm rekursivnij jomu neobhidno M 1 krokiv dlya znahodzhennya NSD b r0 ta najmenshimi znachennyami ye FM 1 ta FM Takim chinom a maye najmenshe znachennya koli q0 1 sho znachit a b r0 FM 1 FM FM 2 Ce dovedennya oprilyudnene Gabrielem Lami v 1844 zaklalo osnovi teoriyi obchislyuvalnoyi skladnosti a takozh ye pershim zastosuvannyam chisel Fibonachchi na praktici Cogo rezultatu dostatno abi pokazati sho algoritm Evklida vikonuye krokiv ne bilshe nizh vp yatero bilshe kilkosti cifr menshogo chisla v desyatkovij sistemi Yaksho algoritmu potribno bilshe N krokiv todi b bilshe abo dorivnyuye FN 1 sho v svoyu chergu bilshe abo dorivnyuye fN 1 de f dorivnyuye zolotomu peretinu Oskilki b fN 1 todi N 1 logfb Oskilki log10f gt 1 5 N 1 5 lt log10f logfb log10b Takim chinom N 5 log10b Zvidsi viplivaye sho algoritm Evklida potrebuye menshe za O h dilen de h dorivnyuye kilkosti cifr v menshomu chisli b Serednya kilkist krokiv Serednyu kilkist krokiv neobhidnih algoritmu Evklida bulo viznacheno v tri rizni sposobi Pershe viznachennya ce serednij chas T a neobhidnij dlya obchislennya NSD zadanogo chisla a ta menshogo naturalnogo chisla b obranogo z rivnoyu jmovirnistyu z cilih vid 0 do a 1 T a 1 a 0 b lt a T a b displaystyle T a frac 1 a sum 0 leq b lt a T a b Odnak oskilki T a b istotno zminyuyetsya v zalezhnosti vid NSD oboh chisel userednena funkciya T a takozh mistit shum Abi zmenshiti cej shum vikoristovuyut druge serednye t a dlya vzayemno prostih do a chisel t a 1 f a 0 b lt a G C D a b 1 T a b displaystyle tau a frac 1 varphi a sum 0 leq b lt a mathrm GCD a b 1 T a b Vsogo isnuye f a vzayemno prostih chisel menshih za a de f ce funkciya Ejlera Znachennya t postupovo zrostaye razom z a t a 12 p2 ln 2 ln a C O a 1 6 e z pohibkoyu poryadku a 1 6 e de e neskinchenno mala Stala C v cij formuli dorivnyuye C 1 2 6 ln 2 p2 4g 24p2z 2 3 ln 2 2 1 467 de g ce Stala Ejlera Maskeroni a z pohidna dzeta funkciyi Rimana Znachennya osnovnogo koeficiyentu 12 p2 ln 2 bulo viznacheno dvoma nezalezhnimi metodami Oskilki pershe serednye mozhe buti obchislene na osnovi tau serednogo dodavannyam dilnikiv d chisla a T a 1 a d a f d t d displaystyle T a frac 1 a sum d a varphi d tau d vono mozhe buti nablizhene formuloyu T a C 12 p2 ln 2 ln a Sd a L d d de L d Tretye serednye Y n viznachayut yak serednyu kilkist krokiv neobhidnih dlya obchislennya NSD koli a ta b vipadkovi chisla rivnomirno rozpodileni vid 1 do n Y n 1 n 2 a 1 n b 1 n T a b 1 n a 1 n T a displaystyle Y n frac 1 n 2 sum a 1 n sum b 1 n T a b frac 1 n sum a 1 n T a Zamina nablizhenoyu formuloyu dlya T a v ce rivnyannya daye ocinku Y n Y n 12 p2 ln 2 ln n 0 06 Obchislyuvalni vitrati za krok Na kozhnomu kroci k algoritmu Evklida obchislyuyut chastku qk ta ostachu rk dlya pari cilih rk 2 ta rk 1 rk 2 qk rk 1 rk Osnovni vitrati za krok polyagayut v obchislenni qk oskilki ostacha rk mozhna shvidko obchisliti na osnovi rk 2 rk 1 ta qk rk rk 2 qk rk 1 Obchislyuvalna skladnist dilennya h bitnih chisel zminyuyutsya yak O h ℓ 1 de ℓ dovzhina chastki Dlya porivnyannya originalnij variant algoritmu na osnovi vidnimannya mozhe buti nabagato povilnishim Dilennya cilogo ekvivalentne q vidniman de q chastka Yaksho vidnoshennya a do b velike chastka bude takozh velikoyu i znadobitsya velika kilkist vidniman Z inshogo boku bulo pokazano sho chastki najimovirnishe matimut neveliki znachennya Jmovirnist otrimati chastku q priblizno ln u u 1 de u q 1 2 Napriklad jmovirnist otrimati chastku 1 2 3 abo 4 dorivnyuye priblizno 41 5 17 0 9 3 ta 5 9 vidpovidno Oskilki operaciya vidnimannya shvidsha za dilennya osoblivo dlya velikih chisel osnovanij na vidnimanni algoritm Evklida mozhe buti na rivni z osnovanim na dilenni Cyu vlastivist vikoristano v binarnomu algoritmi Evklida Poyednannya ocinki kilkosti krokiv z ocinkoyu obchislyuvalnih vitrat na krok pokazuye sho vitrati algoritmu Evklida zrostayut kvadratichno h2 v zalezhnosti vid serednoyi kilkosti cifr h v zadanih chislah Nehaj h0 h1 hN 1 dorivnyuye kilkosti cifr v poslidovnih ostachah r0 r1 rN 1 Oskilki kilkist krokiv N zrostaye proporcijno h chas roboti algoritmu obmezheno O i lt N h i h i h i 1 2 O h i lt N h i h i 1 2 O h h 0 2 N O h 2 displaystyle O Big sum i lt N h i h i h i 1 2 Big subseteq O Big h sum i lt N h i h i 1 2 Big subseteq O h h 0 2N subseteq O h 2 PrikladObchislimo NSD chisel 1071 ta 1029 a b Poyasnennya NSD 1071 1029 Pochatkovi argumenti NSD 1029 42 1071 mod 1029 42 NSD 42 21 1029 mod 42 21 NSD 21 0 42 mod 21 0 21 Oskilki b 0 to povertayemo a 21 U vipadku nevelikih chisel mozhna vikoristati poslidovne dilennya u stovpchik Napriklad nam potribno znajti NSD 2700 1520 Otzhe NSD 2700 1520 20 Div takozhPortal Matematika Najbilshij spilnij dilnik Rozkladannya na prosti mnozhniki Rozshirenij algoritm EvklidaPosilannya The Thirteen Books of Euclid s Elements 2nd ed Facsimile Original publication Cambridge University Press 1925 1956 The Euclidean algorithm generates traditional musical rhythms Proceedings of BRIDGES Mathematical Connections in Art Music and Science Banff Alberta Canada July 31 to August 3 2005 pp 47 56 Stark st 16 Stark st 21 LeVeque st 32 Leveque p 31 Grossman JW 1990 Discrete Mathematics New York Macmillan s 213 ISBN 0 02 348331 8 Schroeder st 21 22 Schroeder st 19 Ogilvy CS Anderson JT 1966 Excursions in number theory New York Oxford University Press s 27 29 LCCN 66 14484 Schroeder st 216 219 Stark p 25 Ore pp 47 48 Stark st 16 20 Knuth st 319 320 Knuth st 318 319 Stillwell st 14 Ore p 43 Stewart BM 1964 Theory of Numbers vid 2nd New York Macmillan s 43 44 LCCN 64 10964 Knuth p 318 Weil A 1983 Number Theory Boston Birkhauser s 4 6 ISBN 0 8176 3141 0 Jones A 1994 Greek mathematics to AD 300 Companion encyclopedia of the history and philosophy of the mathematical sciences New York Routledge s 46 48 ISBN 0 415 09238 8 1954 Science Awakening translated by Arnold Dresden Groningen P Noordhoff Ltd s 114 115 von Fritz K 1945 The Discovery of Incommensurability by Hippasus of Metapontum Ann Math 46 242 264 doi 10 2307 1969021 1949 Mathematics in Aristotle Oxford Press s 80 83 1987 The Mathematics of Plato s Academy A New Reconstruction Oxford Oxford University Press s 31 66 ISBN 0 19 853912 6 Becker O 1933 Eudoxus Studien I Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid Quellen und Studien zur Geschichte der Mathematik B 2 311 333 Sturm C 1829 Memoire sur la resolution des equations numeriques Bull des sciences de Ferussac 11 419 422 Knuth pp 339 364 1844 Note sur la limite du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers Comptes Rendus Acad Sci 19 867 870 Grossman H 1924 On the Number of Divisions in Finding a G C D The American Mathematical Monthly 31 443 doi 10 2307 2298146 Honsberger R 1976 Mathematical Gems II The Mathematical Association of America s 54 57 ISBN 0 88385 302 7 Knuth p 344 Ore p 45 Knuth p 343 Mollin p 21 LeVeque p 35 Mollin pp 21 22 Knuth p 353 Knuth p 357 Tonkov T 1974 On the average length of finite continued fractions Acta arithmetica 26 47 57 Porter JW 1975 On a Theorem of Heilbronn Mathematika 22 20 28 Knuth DE 1976 Evaluation of Porter s Constant Computers and Mathematics with Applications 2 137 139 doi 10 1016 0898 1221 76 90025 0 Dixon JD 1970 The Number of Steps in the Euclidean Algorithm J Number Theory 2 414 422 doi 10 1016 0022 314X 70 90044 2 Heilbronn HA 1969 On the Average Length of a Class of Finite Continued Fractions U Paul Turan red Number Theory and Analysis New York Plenum s 87 96 LCCN 68 8991 Knuth p 354 Norton GH 1990 On the Asymptotic Analysis of the Euclidean Algorithm Journal of Symbolic Computation 10 53 58 doi 10 1016 S0747 7171 08 80036 3 Knuth p 355 Knuth p 356 Knuth pp 257 261 Knuth p 352 Wagon S 1999 Mathematica in Action New York Springer Verlag s 335 336 ISBN 0 387 98252 3 Cohen p 14 Cohen pp 14 15 17 18