C++ Rozszerzony algorytm Euklidesa

Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

C++ Rozszerzony algorytm Euklidesa

Post autor: Mariusz M »

Na podstawie filmiku użytkownika memberlist.php?mode=viewprofile&u=87320
napisałem poniższą funkcję

Kod: Zaznacz cały

int gcdex(int a,int b, int &x,int &y){
    int xa = 1, ya = 0, xb = 0, yb=1;
    int a0 = a, b0 = b;
     int q;
    while(a0 != 0 && b0 != 0)  
   {
            if(abs(a0) > abs(b0))
            {
                  q = a0/b0;
                   a0 %= b0;
                   xa -= q*xb;
                   ya -= q*yb;
            }
            else
            {
                   q = b0/a0;
                   b0 %= a0;
                    xb -= q*xa;
                    yb -= q*ya;
            }
   } 
if(b0 == 0)
{
     x = xa;
     y = ya;
}
else
{
    x = xb;
    y = yb;
}
if(a*x+b*y < 0)
{
     x = -x;
     y = -y;
}
return a*x+b*y;
}
I chyba powinna ona działać poprawnie nawet dla liczb ujemnych
Przeanalizujmy ten kod razem
sylvi91
Użytkownik
Użytkownik
Posty: 64
Rejestracja: 10 paź 2017, o 04:40
Płeć: Mężczyzna
wiek: 47
Lokalizacja: Łódź
Podziękował: 6 razy

Re: C++ Rozszerzony algorytm Euklidesa

Post autor: sylvi91 »

Cześć. Podaj link do filmiku, o którym wspomniałeś, bo tak bez kontekstu to nie wiem praktycznie nic. Jaki jest Twój cel przy omawianiu tego zagadnienia?
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

Re: C++ Rozszerzony algorytm Euklidesa

Post autor: Mariusz M »

Sylvi to był ten filmik

Kod: Zaznacz cały

https://www.youtube.com/watch?v=x12La1oBKhM
ODPOWIEDZ