Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 20. 07. 2015 12:10

vytautas
Příspěvky: 426
Škola: MFF UK - MOM
Pozice: študent
Reputace:   13 
 

rozšírený euklidov algoritmus

zdravím

mám problém, s rozšíreným euklidovým algoritmom pri hľadaní Bézoutových koeficientov.
viem, že platí $r_k=r_{k-2} - r_{k-1}*q$ 
(q je definované v algoritme)

ďalej, $r_k=s_k*a+t_k*b$ kde s,t sú bezoutove koeficienty.

a platí podobne ako pre r $s_k=s_{k-2} - s_{k-1}*q$ a $t_k=t_{k-2} - t_{k-1}*q$

potom algoritmus(písaný v pascale) vyzerá asi takto:
s0:=0;
s1:=1;
t0:=1;
a:=StrToInt(edit1.Text);
b:=StrToInt(edit2.Text);

r0:=a;
r1:=b;

  if r0>r1 then   t1:= - r0 div r1
           else t1:= - r1 div r0;
  repeat
    if r0>r1 then
          begin
          q:=r0 div r1;
          r:=r0-r1*q;
          r0:=r1;
          r1:=r;
          s:=s0-s1*q;
          s0:=s1;
          s1:=s;
          t:=t0-t1*q;
          t0:=t1;
          t1:=t;
          memo1.lines.add(inttostr(s0) +' ' + inttostr(t0)+ ' ' +inttostr(q));
          end
      else begin
           i:=r1;
           r1:=r0;
           r0:=i;
            end;
    until r=0;

(kurzíva je niečo naviac, čo by nemalo ovplyvňovať chod algoritmu)

po prechode tohto algoritmu, mám $gcd(a,b)=r_0$ , lenže bezoutove koeficienty (t0,s0) nesedia

kde je chyba ? ďakujem za odpovede.


Per aspera ad astra

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson