Úvodní stránka | Tato stránka v originále

Euclidean algoritmus

Euclidean algoritmus (také volal Euclidův algoritmus) je algoritmus určovat největší společný dělitel (GCD) dva celá čísla. To je jeden z nejstarších algoritmů známý, protože to objevilo se v Euclid je Elementy asi 300 BC. Algoritmus nevyžaduje factoring.

Daný dvě přirozená čísla a b, první kontrola jestliže b je nulový. Jestliže ano, pak GCD je . Jestliže ne, počítat c, zbytek po rozdělení b. Nahradit s b, b s c, a zahájit proces znovu.

Například, GCD 1071 a 1029 je počítán tímto algoritmem být 21 s následujícími kroky:

       b       c

1071102942
10294221
42210
210

Algoritmus může být vytvořen v Python programovacím jazyce takto:

def gcd (, b): zatímco b! = 0: c = % b = b b = c návrat absolutní ()

( absolutní hodnota je používána v poslední řadě zajistit, že algoritmus správně se zabývá negativními vstupy; např. gcd (- 7, 0) = 7.)

Tím, že drží dráhu kvocientů nastávat během algoritmu, jeden může také určovat celá čísla p a q s ap+bq = gcd (,b). Toto je známé jako prodloužený Euclidean algoritmus.

Tyto algoritmy mohou být používány v nějakém kontextu kde divize s remainder je možný. Toto zahrnuje ringss polynomials přes pole stejně jako kruh Gaussian celých čísel, a obecně všechny Euclidean domény.

Euclid původně vytvořil problém geometricky, jako problém nálezu obyčejný “míra” pro dva délky řádky a jeho algoritmus pokračovali opakovaným odčítáním kratší od delší části. Toto je objasněno s následující implementací v Python, který pracuje jen pro pozitivní vstupy a je značně méně výkonný než metoda vysvětlila to nahoře:

def gcd (, b): zatímco! = b: jestliže > b: = - b jinde: b = b - návrat

Tabulka s obsahem
1 důkaz správnosti Euclidean algoritmu
2 provozní
3 řetězové zlomky

Důkaz správnosti Euclidean algoritmu

Důkaz tohoto algoritmu není těžký. Předpokládat a b jsou čísla jehož GCD musí být předurčený. A předpokládat zbytek divize b je c. Proto = qb + c kde q je kvocient divize. Nyní nějaký společný dělitel a b také se dělí c (protože c moci být psán jak c = - qb); podobně, nějaký společný dělitel b a c bude také se dělit . Tak největší společný dělitel a b je stejný jako největší společný dělitel b a c. Proto to je dost jestliže my pokračujeme v procesu s čísly b a c. Protože c je menší v absolutní hodnotě než b, my odkážeme dosah c = 0 poté, co finitely mnoho kroků.

Provozní

Když analyzuje provozní Euclid je algoritmus, to vypne to vstupy vyžadovat nejvíce kroky jsou dva postupný Fibonacci čísla, a nejhorší případ vyžaduje a théta; (n) divize, kde n je množství číslic ve vstupu (vidět Velký O notace).

Řetězové zlomky

Kvocienty, které se objeví když Euclidean algoritmus je aplikován na vstupy a b být přesně čísla se vyskytovat v řetězovém zlomku reprezentace /b. Brát například příklad = 1071 a b = 1029 použitý nahoře. Tady je výpočet se zvýrazněnými kvocienty:

1071 = 1029 × 1 + 42
1029 = 42 × 24 + 21
42 = 21 × 2 + 0
Od tohoto, jeden může číst mimo to
.
Tato metoda může dokonce být užitá na skutečné vstupy a b; jestliže /b je nerozumný, pak Euclidean algoritmus neskončí, ale vypočítavý sled kvocientů ještě reprezentuje (nyní nekonečný) řetězový zlomek reprezentace /b.