Evklidov algoritem: Razlika med redakcijama
Vrstica 10: | Vrstica 10: | ||
Zapis algoritma z [[rekurzija|rekurzijo]]: |
Zapis algoritma z [[rekurzija|rekurzijo]]: |
||
'''function''' gcd(a, b) |
'''function''' gcd(a, b) |
||
'''ifbčvljsdfčklAJJJJJJJJJJJJJJJJJJJJJJJJisdoghzenfdjsklnfmhfčxkn sdfjghdćkbn vjdhćskdlnfjklbn jčskd bfmgbfjčkbnkmn gbjčkjčkdf gb bngdfjčkgnlm gnadfj nmf bsdjabnjkdfb jn jsdbtc vjkgbnvfj bvčkdckjsdfbdm cdxsjčkfsd |
'''ifbčvljsdfčklAJJJJJJJJJJJJJJJJJJJJJJJJisdoghzenfdjsklnfmhfčxkn |
||
sdfjghdćkbn vjdhćskdlnfjklbn jčskd bfmgbfjčkbnkmn gbjčkjčkdf gb bngdfjčkgnlm gnadfj |
|||
nmf bsdjabnjkdfb jn jsdbtc vjkgbnvfj bvčkdckjsdfbdm cdxsjčkfsd cnmsdgijsdnxcčkmbnčkj |
|||
sdvxjcčknmgbjvcčkfjgn mkvdfjčka nvxcknmjgbčjm cbvčylv-c,mgbvnjkfd bčskdfjv n,nmads jcvkdgbvojenr. |
|||
a vam je zj jasn? |
a vam je zj jasn? |
Redakcija: 19:07, 4. maj 2009
Evklídov algorítem je postopek, s katerim določimo največji skupni delitelj dveh števil oziroma polinomov. Evklid je sicer prvotno je zasnoval algoritem za določanje največje skupne mere dveh daljic.
Prednost Evklidovega postopka je, da ni potrebno razcepiti števil. Sam postopek je sicer eden najstarejših znanih algoritmov in je znan od približno leta 300 pr. n. št., verjetno pa je bil poznan že 200 let prej.
Opis algoritma
Če imamo naravni števili a in b, predpostavimo, da je a večji ali enak b. Če je b enak nič, potem je a rezultat postopka. Sicer pa nadaljujemo postpek s številom b in ter celoštevilskim ostankom deljenja a z b (a mod b).
Zapis algoritma z rekurzijo:
function gcd(a, b) ifbčvljsdfčklAJJJJJJJJJJJJJJJJJJJJJJJJisdoghzenfdjsklnfmhfčxkn
sdfjghdćkbn vjdhćskdlnfjklbn jčskd bfmgbfjčkbnkmn gbjčkjčkdf gb bngdfjčkgnlm gnadfj nmf bsdjabnjkdfb jn jsdbtc vjkgbnvfj bvčkdckjsdfbdm cdxsjčkfsd cnmsdgijsdnxcčkmbnčkj sdvxjcčknmgbjvcčkfjgn mkvdfjčka nvxcknmjgbčjm cbvčylv-c,mgbvnjkfd bčskdfjv n,nmads jcvkdgbvojenr.
a vam je zj jasn?
== WTF
==
Zapis algoritma v jezikih C in C++
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
Ali iterativna različica:
int gcd(int a, int b) {
int t;
while (b != 0) {
t = b;
b = a % b;
a = t;
}
return a;
}