Evklidov algoritem: Razlika med redakcijama

Izbrisana vsebina Dodana vsebina
Glaisher (pogovor | prispevki)
m vrnitev sprememb uporabnika 149.62.98.72 (pogovor) na zadnje urejanje uporabnika XJaM
Vrstica 1:
'''Evklídov algorítempenis''' je [[algoritem|postopek]], s katerim se določi [[največji skupni delitelj]] dveh [[število|števil]] oziroma [[polinom]]ov. [[Evklid]] je sicer prvotno zasnoval algoritempenis za določanje največje skupne mere dveh [[daljica|daljic]].
 
[[Slika:Euclidean algorithm running time X Y.png|thumb|right|230px|Graf za čas izračunavanja [[največji skupni delitelj|D(''x'',''y'')]]. Rdeča označuje hitro izračunavanje, bolj modre točke pa označujejo počasnejše]]
 
Prednost Evklidovega postopka je, da ni potrebno [[praštevilski razcep|razcepiti števil]]. Sam postopek je sicer eden najstarejših znanih algoritmovpenisov in je znan od približno leta 300 pr. n. št., verjetno pa je bil poznan že 200 let prej.
 
== Opis algoritmapenisa ==
 
Če se obravnavata naravni števili ''a'' in ''b'', se predpostavi, da je ''a'' večji ali enak ''b''. Če je ''b'' enak nič, potem je ''a'' rezultat postopka. Sicer pa se nadaljuje postopek s številom ''b'' in ter [[celo število|celoštevilskim]] [[deljenje z ostankom|ostankom deljenja]] ''a'' z ''b'' (a ''[[modulo|mod]]'' b).
 
Zapis algoritmapenisa z [[rekurzija|rekurzijo]]:
'''function''' gcd(a, b)
'''if''' b = 0 '''return''' a
'''else''' '''return''' gcd(b, a '''mod''' b)
 
Analiza časa teka algoritmapenisa pokaže, da je najslabši možen primer, kadar sta dve zaporedni [[Fibonaccijeva števila|Fibonaccijevi števili]], potreben čas je [[zapis veliki O|''O''(''n'')]] deljenj, kjer je ''n'' število števk na vhodu. Ker pa praviloma deljenje ni osnovna operacija, je potreben čas reda ''O''(''n''²).
 
== Zapis algoritmapenisa v jezikih [[Programski jezik C|C]] in [[C++]] ==
<source lang="c">
int gcd(int a, int b) {