Extended Euclidean Algorithm

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

public class Main {

public static int[] extendedEuclidean(int a, int b) {


if (b == 0) {
int[] result = {a, 1, 0};
return result;
} else {
int[] previousCoefficients = extendedEuclidean(b, a % b);
int gcd = previousCoefficients[0];
int x = previousCoefficients[2];
int y = previousCoefficients[1] - (a / b) * previousCoefficients[2];
int[] currentCoefficients = {gcd, x, y};
return currentCoefficients;
}
}

public static void main(String[] args) {


int a = 35;
int b = 15;
int[] coefficients = extendedEuclidean(a, b);
int gcd = coefficients[0];
int x = coefficients[1];
int y = coefficients[2];

System.out.println("GCD(" + a + ", " + b + ") = " + gcd);


System.out.println("Coefficients (x, y) satisfying Bézout's identity: (" +
x + ", " + y + ")");
}
}

public class Main


{
public static void main(String[] args) {
int a=30,b=20,x=0,y=1;
int c[] = new int[2];
c[0]=a;
c[1]=b;
int result = gcd(a,b,x,y,c);
System.out.println(result);
}
static int gcd(int a,int b,int x,int y,int c[])
{
if (b==0)
{
int GCD = c[0]*x + c[1]*y;
System.out.println(GCD);
System.out.println(x+" "+y);
return a;
}
else
{
int q = a/b;
int r = a%b;
int t = x -(y*q);

if(r!=0)
return gcd(b,r,y,t,c);
else
return gcd(b,r,x,y,c);

}
}
}

You might also like