1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include <iostream>
#include <tuple>
using namespace std;
tuple<int, int, int> extended_gcd(int u, int v)
{
if (u == 0)
return make_tuple(v, 0, 1);
int gcd, x, y;
tie(gcd, x, y) = extended_gcd(v % u, u);
return make_tuple(gcd, (y - (v/(u * -1)) * x), x);
}
int main()
{
int u = 612898;
int v = 765051;
tuple<int, int, int> t = extended_gcd(u, v );
int gcd = get<0>(t);
int x = get<1>(t);
int y = get<2>(t);
cout << "GCD is " << gcd << endl;
cout << "a = " << x << " b = " << y << endl;
cout << u << "*" << x << " + " << v << "*" << y << " = " << gcd;
printf("\n");
return 0;
}
|