New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Dyskusja:Algorytm Euklidesa - Wikipedia, wolna encyklopedia

Dyskusja:Algorytm Euklidesa

Z Wikipedii

kod do Pythona podany na stronie przy wartosciach ujemnych zawiesza program moj kod tego nie robi

def lala(a,b):

   while 1:
       if a==b:
           return a
       elif a > b:
           a, b=b, a-b
       elif a < b:
           a, b=b, b-a


i źle nie robi że sie dla ujemnych zawiesza ;) albowiem jest napisane: (...) liczb naturalnych (...) :] jak kto chce stosowac do liczb mniej naturalnych niech sobie "zmodułuje" ;) rownie dobrze ktoś by mógł zgłosic watpliwość, że nie dziala dla ułamków :) --severson 12:27, 28 paź 2004 (CEST)

Spis treści

[edytuj] nie rozumiem

nie mam pojecia o co chodzi!!

Z algorytmem na stronie jest jednak pewien problem:

  1. dane są dwie liczby naturalne a i b
  2. jeśli b jest równe zeru, to NWD jest równe a...

Jeśli np. a=0 b=1 to ... podobnie problem jeśli b=0, bo jaki to ma sens, ze NWD (5,0)=5 Coś więc trzeba poprawić.

Pzdr WtK (witek@oeiizk.waw.pl)

Twoja poprawka była dobra, ale ponieważ nie chciało nam się rozważać przypadku, gdy b=0, zażądałyśmy a, b>0; za to nie trzeba zakładać, że a>b - algorytm działa i tutaj. Dzięki za zwrócenie uwagi i przepraszamy, żeśmy nie dostrzegły od razu. Sprawdź, czy teraz działa. 4Cuwagi 15:12, 25 maj 2005 (CEST)



BŁĄD!!! Musi byc zalozenie, ze a>b. Bo w koncu 5 mod 3 to nie jest to samo, co 3 mod 5!!!


NWD(x,0)=x i jest to zgodne z definicją (bo \forall\ x\in \mathbb{N}\ x|0), jedyny problem jest przy NWD(0,0) ale zazwyczaj przyjmuje się NWD(0,0)=0 więc też się zgadza ...

co do a>b w pierwszym kroku algorytm poprostu zamieni a z b, i już będzie a<b

[edytuj] Inny przykład w Pascalu

W "innym przykładzie w Pascalu" brakuje pętli! Mik 06:56, 20 sty 2006 (CET)

[edytuj] Implementacja w SQL

Jakoś specjlanie nie miałem nigdy potrzeby, więc się nie wyznaję na funkcjach w SQL, ale o ile wiem, to w oficjalnym standardzie nie ma czegoś takiego jak funkcje. Czyżby chodziło tam o coś używanego w PostgreSQL - to znaczy PLSQL? --Nux zostaw notkę 19:00, 4 cze 2006 (CEST)

[edytuj] liczby calkowite, nie naturalne

co prawda nie ma za wiele czasu i dlatego sam tego nie poprawie, ale w rozszerzonym algorytmie euklidesa rozwiazaniem sa liczby calkowite, nie naturalne, poniewaz NWD(a,b) jest jednoczesnie mniejszy od a i mniejszy od b, a co za tym idzie od dowolnej sumy xa+yb, gdy x,y naleza do liczb naturalnych (oczywiscie zakladajac ze a i b sa nieujemne - tak jak jest w komentarzu do kodu w javascript)

dodatkowo zapraszam na

http://www.algorytm.org/index.php?option=com_content&task=view&id=166&Itemid=28

[edytuj] Javascript i zaokrąglanie w dół.

Można skorzystać z podwójnego przeczenia bitowego zamiast Math.floor

Przykładowo ~~6.8 ~~3.345

[edytuj] Rozszerzony Algorytm Euklidesa w Turbo Pascalu z opisem

Program rozszerzonego algorytmu w Turbo Pascalu . Zmienną d mozna wykorzystac na przyklad do liczenia ilosci iteracji potrzebnych do wykoanania algorytmu . Jest NAPRAWDE szybki !!! - 3 lub 4 razy wystarczaja !!!

program Euklides ; { Program dziala na zasadzie rozszerzonego algorytmu Euklidesa } uses dos; var

   a,b,c,d,p,q,r,s,a0,b0,qout,new_r,new_s:        longint;

begin

 writeln ( ' Program rozszerzonego algorytmu Euklidesa ');
 writeln (' Program oblicza P takie ze P*A = 1 MOD B ');
 writeln ( ' podaj A ' );
 readln (a) ;
 writeln ( ' podaj B - ABY DZIALALO MUSI TO BYC LICZBA PIERWSZA  ');
 readln (b);
 a0 := a;
 b0 := b ;
 p := 1 ;
 q := 0 ;
 r := 0 ;
 s := 1 ;
 while b <> 0 do
  begin
   qout:=trunc( a/b );
   c := a - qout*b;
   a := b;
   b := c;
   new_r := p - qout * r ;
   new_s := q - qout * s ;
   p := r ;
   q := s ;
   r := new_r ;
   s := new_s ;
   d:=1;
  end;
  if p<0 then p:=p+b0;
  { Obliczenia prowadzimy w zakresie b0 - dlatego ta operacja }
  writeln ( ' Program wydaje dwie liczby takie ze ');
  writeln ( ' P * A = 1 MOD B ');
  writeln ( ' P=  ', p , '  dodatkowa zmienna q=' , q );
  writeln ( ' Aby zakonczyc nacisnij ENTER ' ) ;
  readln ;

end.

Rozpatrzmy jak to dziala : Prosty przyklad liczby 4 i 11 . Wynikiem jest oczywiscie 3 , poniewaz 3*4=12 a 12 mod 11 daje 1 . Mamy wiec liczbe 3 ktora spelnia warunek

  3*4 mod 11 = 1

Jak ja otrzymac ? Mamy rozszerzony algorytm Euklidesa .

   Czesc algorytmu dziala tak jak standardowy algorytm
   i - numer iteracji

i,,,,a,,,,b,,,,qout - dodatkowa zmienna potrzebna nizej 0,,,,4,,,,11,,,0 1,,,,11,,,4,,,,2 2,,,,4,,,,3,,,,1 3,,,,3,,,,1,,,,3 4,,,,1,,,,0,,,,- tu algorytm sie zatrzymuje poniewaz b=0 . W kolejnych iteracjach algorytmu Obliczamy czesc calkowita a/b otrzymujac qout. W miejsce a wpisujemy b. W miejsce b wpisujemy wynik a mod b .

   Aby uzyskac wynik czyli liczbe 3 opisana jako p obliczamy :
  r = p - qout * r{poprzednie}
  Czyli otrzymujemy ( {} - oznacza  numer iteracji ) :
  r{1} = 1{p startowe} - 0{qout} * 0{r startowe} = 1
        p = 0 - przeniesione z r w tym wypadku startowego
  r{2} = 0 - 2 * 1 = -2
        p=1 - przeniesione z poprzedniego r , dlatego w algorytmie
        sa dwie zmienne r i NEW_R
  r{3} = 1 -   1 * -2 = 3
        p = -2
  r{4} = -2    -3*3 = -11
        p = 3

Tu algorytm sie zatrymuje i wydaje wynik jako 3 . Jesli wynik wyjdzie ujemny po prosty dodajemy b do wyniku poniewaz wynik jest utrzymywany " w kolko " w granicach b .

[edytuj] dowód twierdzenia

Moim zdaniem dowód prawdziwości twierdzenia jest delikatnie mówiąc nieprzekonywujący. Proponuję dodać do niego (przerobioną wersję z angielskiej wiki):

Aby wykazać że NWD (a,b) = NWD (b, a\ mod\ b) należy udowodnic, iż wspólny podzielnik liczb a i b jest również podzielnikiem liczby a\ mod\ b

Przyjmijmy:

d = NWD (a,b) \Rightarrow a=sd,\ b=td

r = a\ mod\ b \Rightarrow a=pb+r

gdzie s,t,p są liczbami całkowitymi.

Wtedy:

r = apb = sdptd = d(spt)

zatem d jest również podzielnikiem r

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu