{"id":1001,"date":"2026-02-19T21:58:15","date_gmt":"2026-02-19T20:58:15","guid":{"rendered":"https:\/\/trzykody.pl\/?p=1001"},"modified":"2026-02-19T21:58:16","modified_gmt":"2026-02-19T20:58:16","slug":"algorytm-euklidesa-jako-metoda-obliczania-najwiekszego-wspolnego-dzielnika-i-jego-zastosowania-w-matematyce-i-informatyce","status":"publish","type":"post","link":"https:\/\/trzykody.pl\/index.php\/2026\/02\/19\/algorytm-euklidesa-jako-metoda-obliczania-najwiekszego-wspolnego-dzielnika-i-jego-zastosowania-w-matematyce-i-informatyce\/","title":{"rendered":"Algorytm Euklidesa jako metoda obliczania najwi\u0119kszego wsp\u00f3lnego dzielnika i jego zastosowania w matematyce i informatyce"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Algorytm Euklidesa<\/strong> jest jedn\u0105 z najstarszych i najprostszych metod obliczania najwi\u0119kszego wsp\u00f3lnego dzielnika (NWD) dw\u00f3ch liczb ca\u0142kowitych. Znajduje zastosowanie zar\u00f3wno w matematyce czystej, jak i w informatyce praktycznej, na przyk\u0142ad w kryptografii, systemach numerycznych, a tak\u017ce przy optymalizacji oblicze\u0144 zwi\u0105zanych z dzieleniem i redukcj\u0105 u\u0142amk\u00f3w. Algorytm ten pozwala w spos\u00f3b efektywny uzyska\u0107 NWD dw\u00f3ch liczb i jest podstaw\u0105 wielu bardziej z\u0142o\u017conych algorytm\u00f3w liczbowych. W dalszej cz\u0119\u015bci szczeg\u00f3\u0142owo omawiamy dzia\u0142anie, implementacje i pu\u0142apki Algorytmu Euklidesa.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis Tre\u015bci<\/h2><nav><ol><li class=\"\"><a href=\"#dokladne-wyjasnienie-mechanizmu-dzialania-algorytmu-euklidesa-i-logika-stojaca-za-obliczeniami-najwiekszego-wspolnego-dzielnika\">Algorytm Euklidesa: Dok\u0142adne wyja\u015bnienie mechanizmu dzia\u0142ania i logika stoj\u0105ca za obliczeniami najwi\u0119kszego wsp\u00f3lnego dzielnika<\/a><ol><li class=\"\"><a href=\"#wzor-ogolny-dla-algorytmu-euklidesa\">Wz\u00f3r og\u00f3lny dla Algorytmu Euklidesa<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#praktyczna-implementacja-algorytmu-euklidesa-w-roznych-jezykach-programowania-z-przykladami-kodu-i-omowieniem-krokow\">Algorytm Euklidesa: Praktyczna implementacja w r\u00f3\u017cnych j\u0119zykach programowania z przyk\u0142adami kodu i om\u00f3wieniem krok\u00f3w<\/a><\/li><li class=\"\"><a href=\"#rozszerzenie-algorytmu-euklidesa-do-wersji-rekurencyjnej-wyjasnienie-krokow-obliczen-i-porownanie-efektywnosci-z-wersja-iteracyjna\">Rozszerzenie Algorytmu Euklidesa do wersji rekurencyjnej, wyja\u015bnienie krok\u00f3w oblicze\u0144 i por\u00f3wnanie efektywno\u015bci z wersj\u0105 iteracyjn\u0105<\/a><\/li><li class=\"\"><a href=\"#zastosowania-i-uwagi-praktyczne-zwiazane-z-uzyciem-algorytmu-euklidesa-w-codziennych-obliczeniach-oraz-w-systemach-komputerowych\">Zastosowania i uwagi praktyczne zwi\u0105zane z u\u017cyciem Algorytmu Euklidesa w codziennych obliczeniach oraz w systemach komputerowych<\/a><\/li><li class=\"\"><a href=\"#dodatkowe-modyfikacje-i-rozszerzenia-algorytmu-euklidesa-do-obliczen-liczb-wielokrotnych-lub-w-zastosowaniach-praktycznych-w-programowaniu\">Dodatkowe modyfikacje i rozszerzenia Algorytmu Euklidesa do oblicze\u0144 liczb wielokrotnych lub w zastosowaniach praktycznych w programowaniu<\/a><ol><li class=\"\"><a href=\"#algorytm-euklidesa-podsumowanie\">Algorytm Euklidesa &#8211; Podsumowanie<\/a><\/li><\/ol><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dokladne-wyjasnienie-mechanizmu-dzialania-algorytmu-euklidesa-i-logika-stojaca-za-obliczeniami-najwiekszego-wspolnego-dzielnika\">Algorytm Euklidesa: Dok\u0142adne wyja\u015bnienie mechanizmu dzia\u0142ania i logika stoj\u0105ca za obliczeniami najwi\u0119kszego wsp\u00f3lnego dzielnika<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Algorytm Euklidesa opiera si\u0119 na prostym fakcie matematycznym: je\u015bli <math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mi>a<\/mi><\/mrow><annotation encoding=\"application\/x-tex\">a<\/annotation><\/semantics><\/math>a i <math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mi>b<\/mi><\/mrow><annotation encoding=\"application\/x-tex\">b<\/annotation><\/semantics><\/math>b s\u0105 liczbami ca\u0142kowitymi, to NWD(a, b) = NWD(b, a mod b), gdzie \u201emod\u201d oznacza reszt\u0119 z dzielenia. W praktyce oznacza to, \u017ce mo\u017cna sukcesywnie zast\u0119powa\u0107 wi\u0119ksz\u0105 liczb\u0119 reszt\u0105 z dzielenia przez mniejsz\u0105, a\u017c reszta wyniesie 0. Liczba, kt\u00f3ra pozostaje w mianowniku w tym momencie, jest najwi\u0119kszym wsp\u00f3lnym dzielnikiem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad teoretyczny krok po kroku dla liczb 252 i 105:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dzielimy 252 przez 105: reszta = 42<\/li>\n\n\n\n<li>Dzielimy 105 przez 42: reszta = 21<\/li>\n\n\n\n<li>Dzielimy 42 przez 21: reszta = 0<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Ostatecznie NWD(252, 105) = 21.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mechanizm ten dzia\u0142a, poniewa\u017c ka\u017cdy dzielnik wsp\u00f3lny obu liczb jest r\u00f3wnie\u017c dzielnikiem reszty z dzielenia wi\u0119kszej liczby przez mniejsz\u0105. Ta w\u0142a\u015bciwo\u015b\u0107 sprawia, \u017ce algorytm jest nie tylko poprawny, ale tak\u017ce bardzo efektywny.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"wzor-ogolny-dla-algorytmu-euklidesa\">Wz\u00f3r og\u00f3lny dla Algorytmu Euklidesa<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"block\"><semantics><mrow><mtext>NWD<\/mtext><mo stretchy=\"false\">(<\/mo><mi>a<\/mi><mo separator=\"true\">,<\/mo><mi>b<\/mi><mo stretchy=\"false\">)<\/mo><mo>=<\/mo><mrow><mo fence=\"true\">{<\/mo><mtable rowspacing=\"0.36em\" columnalign=\"left left\" columnspacing=\"1em\"><mtr><mtd><mstyle scriptlevel=\"0\" displaystyle=\"false\"><mrow><mi>b<\/mi><mo separator=\"true\">,<\/mo><\/mrow><\/mstyle><\/mtd><mtd><mstyle scriptlevel=\"0\" displaystyle=\"false\"><mrow><mrow><mtext>je<\/mtext><mover accent=\"true\"><mtext>s<\/mtext><mo>\u02ca<\/mo><\/mover><mtext>li&nbsp;<\/mtext><\/mrow><mi>a<\/mi><mtext>\u200a<\/mtext><mo lspace=\"0.22em\" rspace=\"0.22em\"><mrow><mi mathvariant=\"normal\">m<\/mi><mi mathvariant=\"normal\">o<\/mi><mi mathvariant=\"normal\">d<\/mi><\/mrow><\/mo><mtext>\u200a<\/mtext><mi>b<\/mi><mo>=<\/mo><mn>0<\/mn><\/mrow><\/mstyle><\/mtd><\/mtr><mtr><mtd><mstyle scriptlevel=\"0\" displaystyle=\"false\"><mrow><mtext>NWD<\/mtext><mo stretchy=\"false\">(<\/mo><mi>b<\/mi><mo separator=\"true\">,<\/mo><mi>a<\/mi><mtext>\u200a<\/mtext><mo lspace=\"0.22em\" rspace=\"0.22em\"><mrow><mi mathvariant=\"normal\">m<\/mi><mi mathvariant=\"normal\">o<\/mi><mi mathvariant=\"normal\">d<\/mi><\/mrow><\/mo><mtext>\u200a<\/mtext><mi>b<\/mi><mo stretchy=\"false\">)<\/mo><mo separator=\"true\">,<\/mo><\/mrow><\/mstyle><\/mtd><mtd><mstyle scriptlevel=\"0\" displaystyle=\"false\"><mtext>w&nbsp;przeciwnym&nbsp;razie<\/mtext><\/mstyle><\/mtd><\/mtr><\/mtable><\/mrow><\/mrow><annotation encoding=\"application\/x-tex\">\\text{NWD}(a,b) = \\begin{cases} b, &amp; \\text{je\u015bli } a \\bmod b = 0 \\\\ \\text{NWD}(b, a \\bmod b), &amp; \\text{w przeciwnym razie} \\end{cases}<\/annotation><\/semantics><\/math><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"praktyczna-implementacja-algorytmu-euklidesa-w-roznych-jezykach-programowania-z-przykladami-kodu-i-omowieniem-krokow\">Algorytm Euklidesa: Praktyczna implementacja w r\u00f3\u017cnych j\u0119zykach programowania z przyk\u0142adami kodu i om\u00f3wieniem krok\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Poni\u017cej przedstawiono podstawowe implementacje w j\u0119zykach C, C++, Python i PHP. Ka\u017cdy przyk\u0142ad realizuje algorytm w spos\u00f3b iteracyjny, prosty do zrozumienia i bez dodatkowych struktur danych.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>J\u0119zyk<\/th><th>Kod<\/th><th>Opis<\/th><\/tr><\/thead><tbody><tr><td>C<\/td><td><code>c #include &lt;stdio.h&gt; int nwd(int a, int b) { int r; while(b != 0) { r = a % b; a = b; b = r; } return a; } int main() { int x = 252, y = 105; printf(\"%d\\n\", nwd(x,y)); return 0; }<\/code><\/td><td>Funkcja nwd wykorzystuje p\u0119tl\u0119 while i zmienne pomocnicze do wyznaczenia NWD.<\/td><\/tr><tr><td>C++<\/td><td><code>cpp #include &lt;iostream&gt; using namespace std; int nwd(int a, int b) { while(b != 0) { int r = a % b; a = b; b = r; } return a; } int main() { cout &lt;&lt; nwd(252, 105) &lt;&lt; endl; return 0; }<\/code><\/td><td>Podobne podej\u015bcie jak w C, z u\u017cyciem cout do wy\u015bwietlenia wyniku.<\/td><\/tr><tr><td>Python<\/td><td><code>python def nwd(a, b): while b != 0: a, b = b, a % b return a print(nwd(252,105))<\/code><\/td><td>W Pythonie zastosowano tuple assignment, aby skr\u00f3ci\u0107 kod.<\/td><\/tr><tr><td>PHP<\/td><td><code>php &lt;?php function nwd($a,$b){ while($b != 0){ $r = $a % $b; $a = $b; $b = $r; } return $a; } echo nwd(252,105); ?&gt;<\/code><\/td><td>Klasyczne podej\u015bcie iteracyjne z echo do wy\u015bwietlenia wyniku.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rozszerzenie-algorytmu-euklidesa-do-wersji-rekurencyjnej-wyjasnienie-krokow-obliczen-i-porownanie-efektywnosci-z-wersja-iteracyjna\">Rozszerzenie Algorytmu Euklidesa do wersji rekurencyjnej, wyja\u015bnienie krok\u00f3w oblicze\u0144 i por\u00f3wnanie efektywno\u015bci z wersj\u0105 iteracyjn\u0105<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rekurencyjna forma Algorytmu Euklidesa opiera si\u0119 dok\u0142adnie na wzorze NWD(a,b) = NWD(b, a mod b).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funkcja wywo\u0142uje sam\u0105 siebie z parametrami <code>b<\/code> i <code>a mod b<\/code>.<\/li>\n\n\n\n<li>Warunkiem zako\u0144czenia jest osi\u0105gni\u0119cie b = 0.<\/li>\n\n\n\n<li>Zalet\u0105 jest zwi\u0119z\u0142o\u015b\u0107 kodu, wad\u0105 natomiast potencjalnie wi\u0119ksza g\u0142\u0119boko\u015b\u0107 stosu dla bardzo du\u017cych liczb.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad w Pythonie rekurencyjnie:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>J\u0119zyk<\/th><th>Kod<\/th><\/tr><\/thead><tbody><tr><td>Python<\/td><td><code>python def nwd_rek(a,b): if b == 0: return a else: return nwd_rek(b, a % b) print(nwd_rek(252,105))<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Por\u00f3wnanie: wersja iteracyjna jest zwykle bardziej wydajna w praktyce dla du\u017cych liczb, poniewa\u017c unika narzutu wywo\u0142a\u0144 funkcji. Rekurencja jest jednak przydatna do nauki i analizy teoretycznej.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"zastosowania-i-uwagi-praktyczne-zwiazane-z-uzyciem-algorytmu-euklidesa-w-codziennych-obliczeniach-oraz-w-systemach-komputerowych\">Zastosowania i uwagi praktyczne zwi\u0105zane z u\u017cyciem Algorytmu Euklidesa w codziennych obliczeniach oraz w systemach komputerowych<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Redukcja u\u0142amk\u00f3w<\/strong> \u2013 NWD pozwala upro\u015bci\u0107 licznik i mianownik.<\/li>\n\n\n\n<li><strong>Kryptografia<\/strong> \u2013 Algorytm wykorzystywany w kryptosystemach opartych na liczbach pierwszych, np. w RSA do wyznaczania odwrotno\u015bci modulo.<\/li>\n\n\n\n<li><strong>Programowanie system\u00f3w liczbowych<\/strong> \u2013 np. obliczanie wsp\u00f3\u0142czynnik\u00f3w w uk\u0142adach r\u00f3wna\u0144 modularnych.<\/li>\n\n\n\n<li><strong>Pu\u0142apki i b\u0142\u0119dy<\/strong> \u2013 najcz\u0119stsze to:\n<ul class=\"wp-block-list\">\n<li>zapominanie obs\u0142ugi przypadku, gdy jedna z liczb wynosi 0;<\/li>\n\n\n\n<li>u\u017cycie zmiennych typu float zamiast int, co prowadzi do b\u0142\u0119dnych wynik\u00f3w;<\/li>\n\n\n\n<li>rekurencja bez ograniczenia g\u0142\u0119boko\u015bci mo\u017ce wywo\u0142a\u0107 <code>stack overflow<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dodatkowe-modyfikacje-i-rozszerzenia-algorytmu-euklidesa-do-obliczen-liczb-wielokrotnych-lub-w-zastosowaniach-praktycznych-w-programowaniu\">Dodatkowe modyfikacje i rozszerzenia Algorytmu Euklidesa do oblicze\u0144 liczb wielokrotnych lub w zastosowaniach praktycznych w programowaniu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Algorytm mo\u017cna rozszerzy\u0107 na:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NWD wielu liczb<\/strong> \u2013 przez kolejne obliczanie NWD dla par: NWD(a,b,c) = NWD(NWD(a,b), c)<\/li>\n\n\n\n<li><strong>Rozszerzony Algorytm Euklidesa<\/strong> \u2013 pozwala znale\u017a\u0107 nie tylko NWD, ale tak\u017ce liczby ca\u0142kowite x i y spe\u0142niaj\u0105ce r\u00f3wnanie: <math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mi>a<\/mi><mi>x<\/mi><mo>+<\/mo><mi>b<\/mi><mi>y<\/mi><mo>=<\/mo><mtext>NWD<\/mtext><mo stretchy=\"false\">(<\/mo><mi>a<\/mi><mo separator=\"true\">,<\/mo><mi>b<\/mi><mo stretchy=\"false\">)<\/mo><\/mrow><annotation encoding=\"application\/x-tex\">ax + by = \\text{NWD}(a,b)<\/annotation><\/semantics><\/math>ax+by=NWD(a,b), co jest fundamentem w kryptografii i teorii liczb.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad rozszerzonego NWD w Pythonie:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>J\u0119zyk<\/th><th>Kod<\/th><\/tr><\/thead><tbody><tr><td>Python<\/td><td><code>python def rozszerzony_nwd(a,b): if b == 0: return a, 1, 0 else: d, x1, y1 = rozszerzony_nwd(b, a % b) x = y1 y = x1 - (a \/\/ b) * y1 return d, x, y print(rozszerzony_nwd(252,105))<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"algorytm-euklidesa-podsumowanie\">Algorytm Euklidesa &#8211; Podsumowanie<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Algorytm Euklidesa pozostaje jednym z najwa\u017cniejszych narz\u0119dzi w arytmetyce komputerowej i teorii liczb. Jego prostota, efektywno\u015b\u0107 oraz mo\u017cliwo\u015b\u0107 rozszerzenia do r\u00f3\u017cnych zastosowa\u0144 praktycznych czyni\u0105 go fundamentalnym elementem programowania i matematyki stosowanej.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Algorytm Euklidesa jest jedn\u0105 z najstarszych i najprostszych metod obliczania najwi\u0119kszego wsp\u00f3lnego dzielnika (NWD) dw\u00f3ch liczb ca\u0142kowitych. Znajduje zastosowanie zar\u00f3wno w matematyce czystej, jak i w informatyce praktycznej, na przyk\u0142ad w kryptografii, systemach numerycznych, a tak\u017ce przy optymalizacji oblicze\u0144 zwi\u0105zanych z dzieleniem i redukcj\u0105 u\u0142amk\u00f3w. Algorytm ten pozwala w spos\u00f3b efektywny uzyska\u0107 NWD dw\u00f3ch liczb i jest podstaw\u0105 wielu bardziej z\u0142o\u017conych algorytm\u00f3w liczbowych. W dalszej cz\u0119\u015bci szczeg\u00f3\u0142owo omawiamy dzia\u0142anie, implementacje i pu\u0142apki Algorytmu Euklidesa. Algorytm Euklidesa: Dok\u0142adne wyja\u015bnienie mechanizmu dzia\u0142ania i logika stoj\u0105ca za obliczeniami najwi\u0119kszego wsp\u00f3lnego dzielnika Algorytm Euklidesa opiera si\u0119 na prostym fakcie matematycznym: je\u015bli aaa i bbb s\u0105 liczbami ca\u0142kowitymi, to NWD(a, b) = NWD(b, a mod b), gdzie \u201emod\u201d oznacza reszt\u0119 z dzielenia. W praktyce oznacza to, \u017ce mo\u017cna sukcesywnie zast\u0119powa\u0107 wi\u0119ksz\u0105 liczb\u0119 reszt\u0105 z dzielenia przez mniejsz\u0105, a\u017c reszta wyniesie 0. Liczba, kt\u00f3ra pozostaje w mianowniku w tym momencie, jest najwi\u0119kszym wsp\u00f3lnym dzielnikiem. Przyk\u0142ad teoretyczny krok po kroku dla liczb 252 i 105: Ostatecznie NWD(252, 105) = 21. Mechanizm ten dzia\u0142a, poniewa\u017c ka\u017cdy dzielnik wsp\u00f3lny obu liczb jest r\u00f3wnie\u017c dzielnikiem reszty z dzielenia wi\u0119kszej liczby przez mniejsz\u0105. Ta w\u0142a\u015bciwo\u015b\u0107 sprawia, \u017ce algorytm jest nie tylko poprawny, ale tak\u017ce bardzo efektywny. Wz\u00f3r og\u00f3lny dla Algorytmu Euklidesa NWD(a,b)={b,jes\u02cali&nbsp;a\u200amod\u200ab=0NWD(b,a\u200amod\u200ab),w&nbsp;przeciwnym&nbsp;razie\\text{NWD}(a,b) = \\begin{cases} b, &amp; \\text{je\u015bli } a \\bmod b = 0 \\\\ \\text{NWD}(b, a \\bmod b), &amp; \\text{w przeciwnym razie} \\end{cases} Algorytm Euklidesa: Praktyczna implementacja w r\u00f3\u017cnych j\u0119zykach programowania z przyk\u0142adami kodu i om\u00f3wieniem krok\u00f3w Poni\u017cej przedstawiono podstawowe implementacje w j\u0119zykach C, C++, Python i PHP. Ka\u017cdy przyk\u0142ad realizuje algorytm w spos\u00f3b iteracyjny, prosty do zrozumienia i bez dodatkowych struktur danych. J\u0119zyk Kod Opis C c #include &lt;stdio.h&gt; int nwd(int a, int b) { int r; while(b != 0) { r = a % b; a = b; b = r; } return a; } int main() { int x = 252, y = 105; printf(&#8222;%d\\n&#8221;, nwd(x,y)); return 0; } Funkcja nwd wykorzystuje p\u0119tl\u0119 while i zmienne pomocnicze do wyznaczenia NWD. C++ cpp #include &lt;iostream&gt; using namespace std; int nwd(int a, int b) { while(b != 0) { int r = a % b; a = b; b = r; } return a; } int main() { cout &lt;&lt; nwd(252, 105) &lt;&lt; endl; return 0; } Podobne podej\u015bcie jak w C, z u\u017cyciem cout do wy\u015bwietlenia wyniku. Python python def nwd(a, b): while b != 0: a, b = b, a % b return a print(nwd(252,105)) W Pythonie zastosowano tuple assignment, aby skr\u00f3ci\u0107 kod. PHP php &lt;?php function nwd($a,$b){ while($b != 0){ $r = $a % $b; $a = $b; $b = $r; } return $a; } echo nwd(252,105); ?&gt; Klasyczne podej\u015bcie iteracyjne z echo do wy\u015bwietlenia wyniku. Rozszerzenie Algorytmu Euklidesa do wersji rekurencyjnej, wyja\u015bnienie krok\u00f3w oblicze\u0144 i por\u00f3wnanie efektywno\u015bci z wersj\u0105 iteracyjn\u0105 Rekurencyjna forma Algorytmu Euklidesa opiera si\u0119 dok\u0142adnie na wzorze NWD(a,b) = NWD(b, a mod b). Przyk\u0142ad w Pythonie rekurencyjnie: J\u0119zyk Kod Python python def nwd_rek(a,b): if b == 0: return a else: return nwd_rek(b, a % b) print(nwd_rek(252,105)) Por\u00f3wnanie: wersja iteracyjna jest zwykle bardziej wydajna w praktyce dla du\u017cych liczb, poniewa\u017c unika narzutu wywo\u0142a\u0144 funkcji. Rekurencja jest jednak przydatna do nauki i analizy teoretycznej. Zastosowania i uwagi praktyczne zwi\u0105zane z u\u017cyciem Algorytmu Euklidesa w codziennych obliczeniach oraz w systemach komputerowych Dodatkowe modyfikacje i rozszerzenia Algorytmu Euklidesa do oblicze\u0144 liczb wielokrotnych lub w zastosowaniach praktycznych w programowaniu Algorytm mo\u017cna rozszerzy\u0107 na: Przyk\u0142ad rozszerzonego NWD w Pythonie: J\u0119zyk Kod Python python def rozszerzony_nwd(a,b): if b == 0: return a, 1, 0 else: d, x1, y1 = rozszerzony_nwd(b, a % b) x = y1 y = x1 &#8211; (a \/\/ b) * y1 return d, x, y print(rozszerzony_nwd(252,105)) Algorytm Euklidesa &#8211; Podsumowanie Algorytm Euklidesa pozostaje jednym z najwa\u017cniejszych narz\u0119dzi w arytmetyce komputerowej i teorii liczb. Jego prostota, efektywno\u015b\u0107 oraz mo\u017cliwo\u015b\u0107 rozszerzenia do r\u00f3\u017cnych zastosowa\u0144 praktycznych czyni\u0105 go fundamentalnym elementem programowania i matematyki stosowanej.<\/p>\n","protected":false},"author":1,"featured_media":1002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-1001","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kodowanie"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1001"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1001\/revisions"}],"predecessor-version":[{"id":1003,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1001\/revisions\/1003"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media\/1002"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}